asp.net文件下载,实现隐藏文件下载地址

文件下载其实很简单。最简单的方式就是直接用a标签指向文件地址,但是这种方式暴露了文件的地址,不适合做积分下载。同时,如果文件为图片或者xml文件的话浏览器默认是打开文件而不是弹出下载窗口。
第二种就是用js实现。
function getFile(id) {
    jQuery.ajax({
        type: "POST",
        dataType: "json",
        timeout: 3000,
        url: "/upload/ajax.aspx?act=getfile&r=" + Math.random(),
        data: { "id": id },
        beforeSend: function () {
        },
        success: function (data) {
            if (data.statu != "ok") {
                alert(data.msg);
            }
            else {
                window.location.href = data.res;
            }
        },
        error: function (jqXHR, textStatus, errorThrown) {
            alert(alert(textStatus));
        }
    });
}
这种的原理也跟第一种是一样的。虽然实现了隐藏下载地址,但是,同样的如果文件是图片也会出现第一中方式中提到的问题。
第三中就是通过服务器端更改Response 的Header实现文件的下载。
// GET: /Downoad/
        public ActionResult Index() {

            #region 文件下载
            var filePath = Server.MapPath("/images/Razor.pdf");//文件地址
            FileInfo fi = new FileInfo(filePath);
            Response.ClearHeaders();
            Response.AppendHeader("Content-Disposition", "attachment;filename="
                //将文件名改成Guid
                + string.Format("{0:n}{1}", System.Guid.NewGuid(), fi.Extension));
            //文件的大小
            Response.AddHeader("Content-Length", fi.Length.ToString());
            Response.AppendHeader("Last-Modified", fi.LastWriteTime.ToFileTime().ToString());
            Response.AppendHeader("Location", Request.Url.AbsoluteUri);
            //文件的类型。如:pdf文件为:"application/pdf",
            //此处为"application/unknown" 未知类型(浏览器会根据文件类型自动判断)
            Response.ContentType = "application/unknown";
            Response.WriteFile(filePath);
            #endregion
            //Response.End();
            return View();
        }
运行效果:



  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值