Internet Explorer从我的Web应用程序更改包含特殊字符的文件的文件名

时间:2013-02-25 10:37:48

标签: java internet-explorer tomcat

我有一个支持文件下载的Web应用程序。它适用于Firefox和Chrome。但是对于Internet Explorer,当我下载一个带有特殊字符的文件时,例如:#,它总是将字符更改为下划线:_

例如,从Internet Explorer下载后,文件filename#.zip将保存为filename_.zip

Web应用程序本身是使用GWT和Java编写的。 Web应用程序由Tomcat托管。我使用的IE版本是IE11。

我知道发布此问题有点模糊,因为我无法在此处发布我的整个Web应用程序代码。任何想法都是受欢迎的。

更新

这是我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <listener>
        <listener-class>com.mycompany.somelistener</listener-class>
    </listener>

    <filter>
        <filter-name>guiceFilter</filter-name>
        <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>guiceFilter</filter-name>
        <url-pattern>*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>ERROR</dispatcher>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>

    <session-config>
        <session-timeout>10</session-timeout>
    </session-config>

    <security-constraint>
        <web-resource-collection>
            <web-resource-name>webApp</web-resource-name>
            <url-pattern>*</url-pattern>
        </web-resource-collection>

        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

    <error-page>
        <error-code>404</error-code>
        <location>/404.jsp</location>
    </error-page>

</web-app>

1 个答案:

答案 0 :(得分:0)

Windows禁止文件名中的多个字符(\ / : * ? " < > | source),但#应该没问题。

也许IE不喜欢它,因为它用于网络锚点(即url#anchor)。要了解发生了什么:

  1. 确保服务器实际发送您期望的文件名(查看网络上的HTTP响应标头;使用浏览器的开发工具或支持日志记录的本地代理服务器)

  2. 编辑你的代码,在文件名中放入各种奇怪的字符,看看哪些字符没问题,哪些不是

  3. 尝试使用其他浏览器;也许Windows会在浏览器尝试保存文件时重命名该文件。