首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

下载文件时的重命名有关问题(截断或乱码)

2013-08-04 
下载文件时的重命名问题(截断或乱码)在下载文件时,使用的是ID+Name的存储方式跟踪断点,文件名没有出现乱码

下载文件时的重命名问题(截断或乱码)
在下载文件时,使用的是ID+Name的存储方式
跟踪断点,文件名没有出现乱码


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


使用这一句,对于超过17个汉字的文件名,就会被截断(还好,只是把前面的部分给抛弃了,扩展名还在)
但是对于很多管理公文这样的系统,长文件名那肯定是特别常见的(关于开展庆祝建党90周年暨首届XXXX市党建先进十大人物评选活动的通知.doc)


搜索了资料,这个问题很普遍,有解决方案建议强制使用gb2312编码,

Encoding code = Encoding.GetEncoding("gb2312");
Response.ContentEncoding = code;
Response.HeaderEncoding = code;//这句很重要


但是我遇到以下两种情况:
1)

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

这样用的话,得到的文件名根本不对,扩展名没有了,而且整个文件很短(比如CABYSCW.)

2)

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

这样的话,得到的文件名出现了中文乱码
5?90?ж??????.doc


已经在Web.config文件中声明
<globalization requestEncoding= "gb2312" responseEncoding= "gb2312" />
并在这个DownloadAttach.aspx页面中添加
<meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 

下载还是不对

请问各位是如何解决的?
[解决办法]
考虑重命名文件吧= =
或者在下载前,加上一个方法,先让原文件名存到系统剪切板里
[解决办法]
Response.AppendHeader("Content-Disposition", "attachment;filename="" + HttpUtility.UrlEncode(fileName) + """);

的上一句怎么写的

如果是string filename=System.Web.HttpUtility.UrlEncode(Encoding.UTF8.GetBytes(fileName)); 

改成string filename=System.Web.HttpUtility.UrlEncode(Encoding.Default.GetBytes(fileName));

参考
[解决办法]
关注一下 我也遇到相同的情况

[解决办法]
引用:
引用:
Response.AppendHeader("Content-Disposition", "attachment;filename="" + HttpUtility.UrlEncode(fileName) + """);

的上一句怎么写的


如果是string filename=System.Web.HttpUtility.UrlEncod……


换Encoding.Default.GetBytes(fileName) 也不行?
[解决办法]
VS bug?
[解决办法]
应该就是编码的问题,几种常用的都试试
[解决办法]
这个我也遇到过,找了很久也没找到好的解决办法,只能命名短一点了
[解决办法]
直接放弃中文多简单=.=~~

热点排行