我在文件下载时遇到问题,该下载正在用下划线替换所有空格。
基本上我在这里遇到问题:
Response.AddHeader("Content-Disposition",
"attachment; filename=" + someFileName);
问题是,如果someFileName中有一个空格,例如“ check this out.txt”,则会提示用户下载“ check_this_out.txt”。
我认为最好的选择是对文件名进行UrlEncode,所以我尝试了
HttpUtility.UrlEncode(someFileName);
但是它用加号代替了空格,这让我很困惑。所以我就尝试了
HttpUtility.UrlEncode(HttpUtility.UrlDecode("%20"))
解码工作正常,并给了我一个空格,但是编码占用了该空间,然后再次给我加号。
我在这里想念的是吗?如果是这样,我应该如何正确地将空格编码为%20呢?
最佳答案
从this link引用
我自己碰到过这个。如果你
能够将空格更改为%20s
则IE7会将其正确转换。
Firefox虽然会带他们
从字面上看(至少在使用
内容处置标题)
对于来自的请求,将需要执行此操作
仅限IE7。
我们在应用程序中执行了以下操作。 ( 一个
基于tomcat的文档存储库)
String userAgent = request.getHeader("User-Agent");
if (userAgent.contains("MSIE 7.0")) {
filename = filename.replace(" ", "%20");
}
response.addHeader("Content-disposition",
"attachment;filename=\"" + filename + "\"");