您的位置:首页 > 编程语言 > ASP

Asp.net网站中 js通过iframe下载文件

2016-02-22 16:12 756 查看

1. 前台代码

<iframe id="exportIFrame" style="display: none;"></iframe>
//ajax代码
<script type="text/javascript">
$.ajax({
url: "test.ashx?method=downFile&ID=" + ID + "",
type: "Post",
data: {},
error: function (jqXHR, textStatus, errorThrown) {
mini.alert(jqXHR.responseText, "信息提示");
},
success: function (data) {
if (data == "no") {
alert("文件在目录中不存在!");
} else {
var url = "test.ashx?method=downFile&ID=" + ID + "";
var exportIFrame = document.getElementById("exportIFrame");
exportIFrame.src = url;
}

}
});
</script>


2.后台代码

private object downFile(HttpContext context)
{
try
{
string ID = context.Request["ID"];
testBLL bll = new testBLL();
//获取文件信息
DataTable dt = bll.downFile(ID);
if (dt == null)
{
return "no";
}
else
{
string path = HttpContext.Current.Server.MapPath("../Reports/file/") + dt.Rows[0]["FJNAME"].ToString();
if (File.Exists(path))
{
System.IO.FileInfo file = new System.IO.FileInfo(path);
context.Response.Clear();
context.Response.ClearHeaders();
context.Response.Buffer = false;
context.Response.ContentType = "application/octet-stream";
//新的名字+扩展名,HttpUtility.UrlEncode保证下载文件名非乱码
context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(dt.Rows[0]["title"].ToString() + "." + dt.Rows[0]["kuozhanming"].ToString(), System.Text.Encoding.UTF8));
context.Response.AppendHeader("Content-Length", file.Length.ToString());
context.Response.WriteFile(file.FullName);
context.Response.Flush();
context.Response.End();
return "";
}
else
{
return "no";
}
}

}
catch (Exception)
{
return "no";
}
}


菜鸟总结 多存疏漏 感谢指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息