【问题标题】:Empty space in filename issue while downloading file下载文件时文件名中的空格问题
【发布时间】:2011-11-04 06:59:01
【问题描述】:

以下 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 中尝试过,效果很好。

标签: java download httpresponse


【解决方案1】:

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

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

这应该可以解决您的问题。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 如果你这样做,它会将 %20% 作为文件名本身的一部分,并且不会显示为空格字符。
    猜你喜欢
    • 1970-01-01
    • 2014-02-21
    • 2019-11-26
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多