解決tomcat中圖片上傳丟失問題

其實我之前都知道在tomcat中上傳圖片會丟失的問題,因爲之前圖片丟失對我的系統影響不是很大,基本上我的上傳圖片都是頭像,所以丟失就丟失咯,我倒不在乎。可是今天我要做個廣告配置,需要在後臺配置廣告信息,然後在手機當作banner圖顯示,這如果圖片丟失的話就糗大了,於是我在網上找了多種方法,一一試了下,發現下面這種方法十分有效。
(1)把/tomcat/webapps/目錄清空,刪掉該文件夾的所有內容,
(2)修改/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>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

(3)修改/tomcat/conf/server.xml文件

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
               prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
        -->
<!----><Context path="/ser" docBase="D:\project\myProject\editor\WebRoot"></Context>
<!--<Context path="/mvc" docBase="D:\project\myProject\area\WebRoot"></Context>-->
      </Host>

其實就是給工程配置虛擬路徑,這樣tomcat在啓動的時候直接找到你的工程了,你上傳的圖片就不會跑到/tomcat/webapps/目錄,而是直接到了你的工程裏,不管你怎樣重啓項目,或者清理緩存,上傳的文件依然存在!

原理解析:
D:\project\myProject\editor\WebRoot 這個路徑是項目的web根目錄,editor是項目名稱, 那麼D:\project\myProject\editor\src 就是你存放java文件的根目錄了
/ser 就是項目應用的名稱了,或者說是上下文路徑,這個名稱可以隨意修改
如果你的tomcat端口是 8080, 那麼項目的訪問路徑就是 http://localhost:8080/ser
上傳時就會在D:\project\myProject\editor\WebRoot\ 目錄中創建文件夾
不管你怎樣重啓項目,或者清理緩存,上傳的文件依然存在, 因爲上傳的文件都已經存在於你的項目中
這樣方式只需要部署一次,沒有重新部署的說法

如果你是在eclipse中點來點去的部署項目,也就等於是把D:\project\myProject\editor\WebRoot目錄的所有文件和文件夾都複製到了 /tomcat/webapps/editor/目錄下,那麼項目的訪問路徑就是 http://localhost:8080/editor
上傳時就會在 /tomcat/webapps/editor/ 目錄中創建文件夾
只要重新部署或清理緩存,上傳的文件都煙消雲散了
因爲重新部署時,先刪除 /tomcat/webapps/editor/ 目錄,再複製一遍D:\project\myProject\editor\WebRoot目錄的所有文件和文件夾

我是在SSH的環境下配置了上面的文件的,但是我在配置玩重新跑腳本時報錯了:java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderL

其實這個錯誤很明細,jar包找不到,可是我在修改配置文件之前我的項目是可以正常啓動的。這裏要說一點,我的jar包的引入方式是通過User libaraies做映射來使用的,很明顯,我這裏映射的jar包在修改完配置文件後不管用了,上網找了原因,查看了一些資料,發現這個寫得還不錯
http://www.bkjia.com/ASPjc/853556.html
於是我把我的所有jar包放在我的web項目的lib下,重啓項目,OK
然後當你部署web項目的時候,你會發現你的項目在tomcat的webapp下找不到了,這是正常的,因爲它本身就做了映射了,所有當你上傳圖片的時候,其實它就是把圖片放在你原來的項目下面了,那麼不管你怎麼部署項目,你原來的項目的東西都是不會被修改到的,那麼圖片當然就不會不見了。
參考貼吧:http://bbs.csdn.net/topics/360088800

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章