ASP.NET提供文件下载

提供文件下载较简单的方式:

l         最省事的,就是在页面用标签直接链接到文件,如:<a href=’download.rar’>;

l         javascript跳转到文件路径,如:location.href=’download.rar’;

这样的方式暴露了文件路径,没有权限的用户也能在地址栏输入URL进行下载。而且,浏览器对每种文件类型的处理方式都不同。默认情况下,若链接路径是网页、图片或普通文本,会在浏览器中直接打开而不出现另存为对话框。

另外,如果文件原本不存在是动态产生的,就需要后台获取文件路径再触发javascript事件。在ie下,这样会出现信息栏提示为帮助保护您的安全,Internet Explorer阻止从此站点下载文件到您的计算机,选择下载文件选项解除阻止后,页面会刷新导致后台事件重复执行又生成一次文件,用户体验不佳并且增加了服务器负担。

较有效的解决方案:

Response. TransmitFile(string filename),这个方法在下载文件时,不用在内存中对文件进行缓冲处理就能将其发送到客户端浏览器。
示例:下载名为' example.zip'的压缩包
Response.ContentType = "application/x-zip-compressed";
// 添加头信息,指定默认文件名
Response.AppendHeader("Content-Disposition", "attachment; filename=example.zip");
//直接写入输出流,不进行缓存
Response.TransmitFile( Server.MapPath(@"~/download/example.zip") );
Response.End();
/*
 * Content-Disposition
参数
 * attachment,作为附件下载
 * inline,在线打开
 */

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值