【问题标题】:File download name in ChromeChrome 中的文件下载名称
【发布时间】:2012-07-20 06:48:23
【问题描述】:

我需要通过 http 下载 excel 文件。问题是 Chrome 浏览器忽略了我在响应头中设置的文件名,而其他浏览器表现良好。

resp.setContentType("application/vnd.ms-excel");
resp.setHeader("Content-disposition:", "attachment; filename=grid.xls");

Chrome 将其保存为“excel.xls”。如何使 chrome 设置文件名?谢谢

【问题讨论】:

  • 出于好奇:您使用什么 servlet 实现?

标签: java http google-chrome download


【解决方案1】:

获取 HTTP 跟踪,或使用 redbot.org 测试您的网站。

顺便说一句:setHeader 的第一个参数中的尾随冒号看起来很可疑。

【讨论】:

  • 我肯定会使用 Fiddler 或 Wireshark 之类的工具来准确查看浏览器接收到的内容。尾随冒号的良好拾取。你不应该需要它,因为 set header 会用冒号分隔键和值
  • 在greenbytes.de/tech/tc2231/#doublecolon 处添加了测试用例,表明 Safari 和 Chrome 在这里做了正确的事情。
【解决方案2】:

我只是在研究我们为下载 CSV 文件所做的事情。我们发送以下标头;

Cache-Control: no-cache,no-store,max-age=0
Pragma: No-cache
Content-Length: 312
Content-Type: application/csv;charset=UTF-8
Content-disposition: attachment; filename="MyCsvFileToSave.csv"

这适用于我们在 Chrome 中。字符集是否可能有所不同?

【讨论】:

  • 否,Content-Type 上的 charset 参数适用于有效负载,而不适用于标头字段。
【解决方案3】:

删除 setHeader 的第一个参数中的尾随冒号修复了该问题。

【讨论】:

    猜你喜欢
    • 2019-02-24
    • 2010-12-10
    • 2016-11-28
    • 1970-01-01
    • 2011-09-06
    • 2020-12-27
    • 1970-01-01
    • 2011-02-06
    相关资源
    最近更新 更多