我不是100%克服Java或过滤器。接管一些代码,我们发现Firefox中的.ZIP(大写)文件呈现为text / plain。 .ZIP文件在IE中正确下载,但在Firefox中没有。 .zip(小写)在IE和Firefox中都能正确下载。
据我所知,web.xml指向Filter类。 在调用chain.doFilter的代码的关键时,我试图在chain.doFilter之前设置内容类型,然后检查doFilter之前和之后的内容类型。
这是代码:
LOG.debug("Current Content Type: " + response.getContentType());
response.setContentType("application/zip");
LOG.debug("New Content Type: " + response.getContentType());
chain.doFilter(request, response);
LOG.debug("Current Content Type2: " + response.getContentType());
这个输出如下(粗略地):
Current Content Type: null New Content Type: application/zip
<Some stuff where doFilter is called />
Current Content Type2: text/plain
在Firefox中,我将内容类型视为text / plain,因此我认为它的doFilter设置了内容类型。
我们无法更改扩展程序,因为这些文件来自外部来源,因此无法更改。
有关为什么会发生这种情况的指示,或者如何获取.ZIP文件以提示正确下载。
感谢。
答案 0 :(得分:1)
doFilter()
方法正在调用过滤器链中的下一个过滤器。
过滤器链是过滤器列表,因为它们在web.xml中定义。
因此,您的web.xml中可能有一个过滤器,它确实会更改内容类型。
但也许它更简单,在应用程序服务器的默认配置中查找mime映射,或者在web.xml中定义一个mime映射,看看是否有帮助:
<mime-mapping>
<extension>ZIP</extension>
<mime-type>application/zip</mime-type>
</mime-mapping>