下载文件时出现文件名中的空格问题

9

以下Java代码用于通过Web应用程序下载所请求的日志文件:

    protected HttpServletResponse response;
....

    response.setContentType("application/octet-stream");
    String filename = OrgName + ".log";
    response.setHeader("Content-Disposition", "attachment; filename= " + filename);
    OutputStream os = response.getOutputStream();
    os.write(getFile());
    os.close();

OrgName含有空格,例如"Xyz Pvt Ltd"时,问题就出现了。在这种情况下,文件将以"Xyz"而不是"Xyz Pvt Ltd.log"的名称下载。第一个空格后面的部分被忽略。请注意,文件已经正确下载,只是名称显示不正确。我做错了什么吗?还是这是标准行为? 环境:Struts 2、Jboss 5.1.0、Mozilla Firefox 3.5.3

我认为这取决于浏览器。 我刚试过在IE(8.0)和Chrome中,它运行良好。 - Santosh
2个回答

19

我认为我找到了你的问题。只需将文件名字符串设置为带引号的即可。

response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
这应该可以解决你的问题。

0

我认为你需要使用编码来处理空格。你可以查看Apache Base64编码器,我记得空格会被编码为%20%,因此在解码时,你将能够检索带有空格的文件名。


如果你这样做,它会将%20%作为文件名的一部分,并不会将其显示为空格字符。 - Santosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接