一个关于文件下载的有关问题,很奇怪!
一个关于文件下载的问题,很奇怪!!!主要代码如下:C# codeResponse.Clear()Response.ContentType applic
一个关于文件下载的问题,很奇怪!!!
主要代码如下:
C# codeResponse.Clear();Response.ContentType = "application/octet-stream";Response.AppendHeader("Content-Disposition", "attachment;filename=" + Context.Server.UrlPathEncode(fileName));Response.ContentEncoding = System.Text.Encoding.UTF8;Response.TransmitFile(filePath);Response.Flush();Response.End();
现在有一个文件,名称为:DE102211 S系列中低端交换机XXXXXXXXXXXX ISSUE 1.00.docx
XXX部分全部是中文字,XXX部分没有空格或其它特殊字符
在一台客户端下载(目前发现只有这一台,服务器和客户端不在同一个省份),
文件名变成了:%ad低端交换机XXXXXXXXXXXX ISSUE 1.00.docx
但是在其它电脑上都正常。
客户端配置是XP系统,IE8浏览器。
经过调试,发现可能是由于客户端把经过Context.Server.UrlPathEncode(fileName)编码的文件名,前面一部分截断了(这里必须经过编码,文件名可能含有各国文字及字符),导致这种情况。
但是为什么会这样呢?把客户端IE重置了一下,还是不行。是代码有问题,还是客户端设置问题?要怎么弄?
[解决办法]如果就这唯一的客户端是这样,
先把它升成ie9,解决掉
然后再找问题,想办法
[解决办法]另外我很欣赏楼主的结贴率
[解决办法][解决办法]感觉和客户端没有问题,不过我这边也发现一个很奇怪的问题
Server.MapPath("~"), 不同的客户端返回的值大小写是不同的
改成Server.MapPath("") 就一样了。
lz可能碰到同样的问题了。
从下面的表里%ad好像¯
http://www.w3schools.com/TAGS/ref_urlencode.asp
[解决办法]Response.TransmitFile(filePath);
换成别的
比如
Response.WriteFile(filePath);
另外测试直接下载中文文件,没有程序干预的情况,只能帮你想这么多了
[解决办法]这个地方使用 UrlPathEncode?
应该是UrlEncode吧!这两个方法在内容中包含?号时输出结果是不同的。