我在文件下载时遇到问题,该下载正在用下划线替换所有空格。

基本上我在这里遇到问题:

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 + "\"");

08-06 19:20