文件下载所需要的注意事项。
1 Content-disposition
Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。当 Internet Explorer 接收到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名。(请注意,这是设计导致的;无法使用此功能将文档保存到用户的计算机上,而不向用户询问保存位置。)
服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment:
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");
备注:这样浏览器会提示保存还是打开,即使选择打开,也会使用相关联的程序比如记事本打开,而不是IE直接打开了
1 客户端下载时文件名乱码问题
将文件名通过UrlPathEncode编码(通过UrlEncode编码不能解决文件名出现的空格问题,下载时空格会编译成加号,UrlEncode是将整个URL编码,而UrlPathEncode只是将URL中的Path部分编码)
string encodeFileName = HttpUtility.UrlPathEncode("售楼管 理系统.rar");
Context.Response.AddHeader("Content-Disposition",
string.Format("attachment;filename=\"{0}\"",encodeFileName));
Context.Response.WriteFile("售楼管理系统.rar");
网友评论