我有一个使用Apache POI
创建动态Excel电子表格的servlet。我可以很好地创建电子表格。但是,当我使用Google Chrome
和Tomcat
服务器时,下载的文件不会反映正确的文件名。相反,它将文件名替换为servlet的名称。因此,例如,我想下载一个文件“dr_3.xlsx”,它会下载一个名为“excelService”的文件(servlet的名称)。所有内容都是正确的,只是文件名错误。
只有在Tomcat服务器上使用Google Chrome时才会出现此错误。使用Firefox + Tomcat
,Chrome + Jetty
,Firefox + Jetty
和IE(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文件没问题。该文件的名称不正确。
提前感谢您的帮助。