java - Chrome 将连字符 "-"附加到下载的 CSV 文件

标签 java

我的代码适用于 IE 和 FF。在 Chrome 中,浏览器会在文件名的开头和结尾附加“-”连字符,从而使其无法识别文件类型。在保存为 csv 时重命名文件使其在单个单元格中的 Excel 中打开,但我想要一个解决方案来在代码端处理它。好像很难。

下面是我的代码:

//fileName = xxxx.csv
response.setContentType("application/download");
response.setHeader("Cache-Control", "public"); 
response.setHeader("Content-Type", "application/octet-stream");
response.setHeader("Content-Disposition", "attachment; filename= \"" + fileName + "\"");

注意:我搜索了很多博客,但没有找到适用于 Chrome 的解决方案。

最佳答案

我看到两件事:

  1. Content-Disposition 中,filename= 后不应有空格。
  2. 我从来没有在文件名周围使用引号;我不认为你是故意的。我在 the RFC 中没有看到任何关于使用引号的信息, 所以我会摆脱它们。

我预计您会看到一个连字符,因为 Chrome 正在用连字符替换空格或(更有可能)引号,因为它认为引号对于您操作系统上的文件名是无效字符。

FWIW,我的工作 Content-Disposition 标题看起来像这样:

Content-Disposition: attachment;filename=someFileName.csv

题外话:回复你的陈述:

My code works for IE and FF. In Chrome, the browser appends "-" hypen to the start and end of the file name, thus making it unable to recognize the file type.

浏览器应该(而且大多数情况下确实如此)通过 MIME 类型而不是文件扩展名来识别文件类型。您可能希望将 Content-Type 设置为 text/csv而不是 application/octet-stream。 (当然,如果你是在谈论操作系统稍后对文件做了什么,那就是另一回事了。)

关于java - Chrome 将连字符 "-"附加到下载的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530569/

相关文章:

c# - C# 的 @string 文字在 Java 中的对应物是什么?

java - Hadoop索引

java - Apache HttpClient 超时

java - 如何使用子字符串方法返回奇数字符串的中间 3 个字符?

java - Android:将文本字段限制为一位小数

java - Quartz 调度作业异常

java - 覆盖现有的对象图?

java - 关闭用于在 Java/Tomcat 中写入的 HTTP session

java - 如何在JSP文件中按自定义顺序显示EnumSet?

java - 为什么我不能将用户输入添加到前端为 java 和后端为 mysql 的数据库中?