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

18 篇文章 0 订阅
8 篇文章 0 订阅

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";
            }            
        }

菜鸟总结 多存疏漏 感谢指正

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值