Chrome会在下载的CSV文件中附加连字符" - "

sar*_*nya 6 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 + "\"");
Run Code Online (Sandbox Code Playgroud)

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

T.J*_*der 7

我看到两件事:

  1. 你不应该filename=在你的后面留一个空格Content-Disposition.
  2. 我从来没有在文件名周围使用过引号; 我不认为你的意思.我没有看到任何关于在RFC中使用引号的内容,所以我要删除它们.

我希望你看到一个连字符,因为Chrome正在用连字符替换空格或(更有可能)引号,因为它认为操作系统上文件名的引号无效字符.

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

Content-Disposition: attachment;filename=someFileName.csv

偏离主题:重申你的陈述:

我的代码适用于IE和FF.在Chrome中,浏览器会在文件名的开头和结尾附加" - ",因此无法识别文件类型.

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