關於tomcat文件下載配置


前言

  • tomcat文件下載
  • 關閉tomcat目錄列表瀏覽功能
  • Tomcat 不能下載帶中文文件名的附件的方法

在Java Web項目中文件下載是一個很常見的功能,最近在做項目中發現可以通過tomcat本身自帶的特性完成文件下載功能。


tomcat文件下載

  1. 在eclipse中的WebContent下新建文件夾download_file,這個文件夾是專門用來放下載文件的,然后啟動tomcat服務器,
    在瀏覽器中就可以URL:http://localhost:8080/項目名/download_file/文件名,這樣的請求來下載文件(注意文件名要包含后綴)如圖1

Alt text
圖1

關閉tomcat目錄列表瀏覽功能

  1. 其實上面已經完成了一個簡單的文件下載功能,但是有個問題所在,假如url中再download_file后面不加任何文件名的話,tomcat會默認地將download_file的文件目錄遍歷出來(如圖2),

Alt text
圖2
這樣的話別人可以隨意下載其他文件,顯然不夠安全。這里就涉及到tomcat的配置,打開tomcat目錄下的/conf/web.xml

 <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>
        org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

 

 

將listings的value值改為false,禁止tomcat直接訪問文件目錄。

Tomcat 不能下載帶中文文件名的附件的方法

  1. 上面的文件下載還有一點瑕疵,當文件名包含中文時找不到目錄中的文件,這是又要在tomcat目錄下的/conf/server.xml中加上下面的代碼, 在原來的 <Connector>\標簽內加入disableUploadTimeout=”true” URIEncoding=”UTF-8”就可以識別中文文件名
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" disableUploadTimeout="true" URIEncoding="UTF-8"/>

 

 

最后,如果修改配置文件后重啟eclipse的tomcat服務無效,只要將tomcat服務先刪除掉,再重新新建即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM