我的代码适用于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的解决方案.
我看到两件事:
filename=在你的后面留一个空格Content-Disposition.我希望你看到一个连字符,因为Chrome正在用连字符替换空格或(更有可能)引号,因为它认为操作系统上文件名的引号无效字符.
FWIW,我的工作Content-Disposition头看起来像这样:
Content-Disposition: attachment;filename=someFileName.csv
偏离主题:重申你的陈述:
我的代码适用于IE和FF.在Chrome中,浏览器会在文件名的开头和结尾附加" - ",因此无法识别文件类型.
浏览器应该(并且大多数情况下)通过MIME类型识别文件类型,而不是文件扩展名.您可能希望设置Content-Type为text/csv而不是application/octet-stream.(当然,如果你在谈论操作系统稍后对文件做了什么,那就是另一回事了.)