GWT / Apache POI下载Servlet:下载时文件名不正确

我有一个使用Apache POI创builddynamicExcel电子表格的servlet。 我可以创build电子表格就好了。 但是,当我使用Google ChromeTomcat服务器时,下载的文件不能反映正确的文件名。 而是用servlet的名称replace文件名。 所以,例如,我想下载一个文件“dr_3.xlsx”,它会下载一个名为“excelService”(servlet名称)的文件。 所有的内容都是正确的,只是文件名是错误的。

只有在Tomcat服务器上使用Google Chrome时,才会出现此错误。 当使用Firefox + TomcatChrome + JettyFirefox + JettyIE(eww) + Tomcat时,它的性能会如预期的那样。

这是doGet()方法的代码:

 protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { int id = Integer.parseInt(req.getParameter("id")); int BUFFER = 1024 * 100; resp.setContentType( "application/octet-stream" ); resp.setHeader( "Content-Disposition:", String.format("attachment; filename=\"%s\"", "dr_" + id + ".xlsx")); OutputStream outputStream = resp.getOutputStream(); byte[] bytes = buildFile(id); resp.setContentLength(bytes.length); resp.setBufferSize( BUFFER ); outputStream.write(bytes); outputStream.close(); } 

只是重申:Excel文件是好的。 该文件的名称不正确。

提前感谢您的帮助。

感谢Fedy2 ,从"Content-Disposition"删除了冒号。

尝试没有引号:

 resp.setHeader( "Content-Disposition:", String.format("attachment; filename=%s", "dr_" + id + ".xlsx")); 

另外,看看这个讨论。