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

Wow*_*Bow 1 java browser csv spring-mvc content-disposition

我在 Spring 控制器上有以下代码

@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());
..

}
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢

小智 5

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

response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "");
Run Code Online (Sandbox Code Playgroud)