下载文件时文件名为乱码解决方法

Response.AddHeader("Content-Disposition", "attachment;filename="+System.Web.HttpUtility.UrlEncode(file.Name,System.Text.Encoding.UTF8));
代码如下:
 string fileName =Request.QueryString["filepath"].Trim().Split('/')[1];//客户端保存的文件名 

  string filePath = Server.MapPath("../SysFiles/ReportFiles/" + Request.QueryString["filepath"].Trim());//路径

  FileInfo fileInfo = new FileInfo(filePath); 
  Response.Clear();
  Response.ClearContent();
  Response.ClearHeaders();
  Response.AddHeader("Content-Disposition", "attachment;filename="+Server.UrlEncode(fileName));
  Response.AddHeader("Content-Length", fileInfo.Length.ToString());
  Response.AddHeader("Content-Transfer-Encoding", "binary");
  Response.ContentType = "application/octet-stream";
  Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
  Response.WriteFile(fileInfo.FullName);
  Response.Flush();
  Response.End();

但是文件在下载保存时,文件名当中如果有中文字符,中文字符的个数不能超过14个,不然就会出现如下情况:
%80售结转表三大股市大幅观点是法国(20080420224256).xls
 顺便把代码也贴出来:
<asp:repeater id="repdown" Runat="server">
<ItemTemplate>
<span>
<%#DataBinder.Eval(Container.DataItem,"filename")%>
</span><a href='<%#"downfile.aspx?name="+Server.UrlEncode(DataBinder.Eval(Container.DataItem,"filename").ToString())+"&path="+DataBinder.Eval(Container.DataItem,"filepath")%>' target="_self">
下载</a><br>
</ItemTemplate>
</asp:repeater>
========================================

/*WriteFile实现下载*/

FileInfo fileInfo = new FileInfo(Server.MapPath(path));
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(name));

Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End();  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值