发布日期:2008-11-03 15:41 来源: 标签: ASP.NET 实现 下载 功能 中文 文件名
早几天在系统中添加文件管理的下载功能, 要求在ASPX文件中实现, 以进行权限的控件, 于是添加下列代码: ... Response.ContentType = mime; //相应的MIME TYPE Response.AppendHeader("Content-Disposition", "attachment; filename="" +fileName + """); Resp

早几天在系统中添加文件管理的下载功能, 要求在ASPX文件中实现, 以进行权限的控件,

  于是添加下列代码:

...
Response.ContentType = mime; //相应的MIME TYPE
Response.AppendHeader("Content-Disposition", "attachment; filename="" +fileName + """);
  
Response.BinaryWrite(bytes);
Response.End();
...

  当fileName中包含中文时, 文件下载保存时, 文件名变成了乱码, 需要用户修改,这也就违被了我设定预设文件名的初衷.

  解决办法1: 对fileName进行URL编码, 把下划线标注的那句改为

  Response.AppendHeader("Content-Disposition", "attachment; filename="" + Server.UrlEncode(fileName) + """);

  便可.

  虽然中文乱码问题解决了, 但是还有一个问题: 在测试时, 下载保存的文件名有时会变成该页面的名字(.aspx), 虽然可以把内容下载到本地, 但是需要更改文件名及类型, 这样会给用户带来很大的困惑.

  还有一个办法, 可以很简单的解决以上的两个问题:

  解决办法2: 假设当前的URL为 http://localhost/download.aspx?id=123, fileName为"下载.pdf", 我们只要把下载URL改为 http://localhost/download.aspx/下载.pdf?id=123 可, 上面下划线标注的那句代码则可以注释掉了, 试一下, 结果一定让你非常满意!

本文作者:

相关评论

专题信息
    ASP.NET 是一种服务器端脚本技术,可以使(嵌入网页中的)脚本由 Internet 服务器执行。本教材是初学者的福音,十分的基础课程,0基础的都能学会制作自己的网站,非常好的学习教程。想学习ASP.net的爱好者可以从基础知识对象,控件,数据库这里开始吧。