我遇到了一个问题,IE没有像Firefox那样打开Excel文档的"另存为/打开"对话框.
所以我创建了一个servlet过滤器,它使用'*.xls'作为url模式.我现在面临的问题(因为这是我创建的第一个过滤器)是如何获取用户想要的文件的名称,以便正确填充对话框.目前,当用户选择给定页面上的链接时,将调用过滤器.
这是我想出的:
以上是我的doFilter().
String fileName = "fileName.xls"; HttpServletRequest httpRequest = (HttpServletRequest) pRequest; String requestURI = httpRequest.getRequestURI(); if(StringUtils.isNotBlank(requestURI)) { String uri[] = StringUtils.split(requestURI, '/'); fileName = uri[uri.length - 1]; } HttpServletResponse httpResponse = (HttpServletResponse) pResponse; httpResponse.setContentType("application/vnd.ms-excel"); httpResponse.setHeader("Content-disposition", "attachment; filename=\"" + fileName +"\"");
web.xml中:
ExcelFilter vsg.rp.common.ExcelFilter ExcelFilter *.xls
这一切都在我的开发盒上运行:Windows XP,JBoss,Eclipse,Oracle.但是当它在测试服务器上运行时 - Linux,Apache/JBoss,Oracle - 它不起作用.似乎甚至没有调用过滤器,没有抛出错误等等.任何想法为什么会发生这种情况?
您希望适当地设置内容类型以及内容处置标头,因此:
response.setContentType( "应用程序/ vnd.ms-EXCEL");
response.setHeader("Content-Disposition","attachment; filename = \""+ filename +"\"");