java - Content-Disposition 文件扩展名在 Firefox 上无法正常工作

标签 java spring-mvc csv browser content-disposition

我在 Spring Controller 上有以下代码

@RequestMapping(value = "/download", method = RequestMethod.POST)
 public void downloadActive(@RequestParam(value = "type") String offerType, HttpServletResponse response,
            HttpSession session) throws Exception {

 StringBuilder b = new StringBuilder();.
.
.

response.addHeader("Content-Disposition: ", "attachment; filename=my" + offerType + "Offers.csv");
response.getWriter().write(b.toString());
..

}

当单击 EXt Js 中的下载按钮时,将执行此代码。在 Chrome 上,它直接以 *.csv 格式下载文件,当用户打开它时,它会自动使用 Excel 打开文件(如果它们已经安装),这是我想要的正确行为。

但是,在 Firefox 上,它会提示一个“另存为”窗口,其中包含“打开方式”和“保存”选项。如果我使用 open with 选项,它会告诉我文件名是 filename.csv 但类型是 chrome htm 文件。我没有在代码中的任何地方提到 htm,我不知道为什么它试图将其打开为 htm 而不是 csv 文件。一旦它尝试打开它,它会带来 Excel 应用程序,并且内容格式错误。

有没有办法在 Firefox 上避免这个问题?

谢谢

最佳答案

为文件名添加双引号 (") 可以解决该问题。

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

关于java - Content-Disposition 文件扩展名在 Firefox 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18019015/

相关文章:

java - 通过使用 netbeans 单击 jbutton 将带有行的 jbutton 添加到 jtable 中

java - @ModelAttribute 从请求参数填充表单字段而不是支持表单

Python:如何最好地解析 csv 并仅计算一个子集的值

python - 生成 CSV 和空行

java - 空字符串字段作为空字段

database - 如何使用mongoimport导入csv

java - 有什么好的资源可以在没有任何其他编程经验的情况下学习 Java 编程吗?

java - 在 GWT 中向 html 元素添加 id 的最佳方法

java - 从 scala 调用重载的 java 泛型方法

java - 如何在没有任何 IDE 的情况下运行基本的 Spring MVC 应用程序?