下载文件时文件名问题中的空白空间

时间:2011-11-04 06:59:02

标签: java download httpresponse

以下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

2 个答案:

答案 0 :(得分:14)

我想我发现了你的问题。只需将文件名字符串设置为引用

即可
response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");

这可以解决您的问题。

答案 1 :(得分:0)

我认为您必须使用空格编码您可以查看apache base64编码器,我记得空格被编码为%20%,因此在解码时您可以使用空格检索文件名。