圖片上傳到tomcat後突然消失

來源:互聯網
上載者:User

標籤:工程師   inux   改變   run   擷取   center   context   clean   java代碼   

文章轉載:http://blog.csdn.net/helloworld1993/article/details/47661759

調試上傳帳戶圖片時看不見的功夫上傳的圖片就不見了,看了這篇文章恍然大悟!!!以上是一字不差地原文

-------------------------------------------------------------------------------------------------分哥線----------------------------------------------------------------------------------------------------------------------------------

最近在做一個Javaweb的項目,涉及到圖片上傳,並且需要將圖片通過URL回顯給JSP頁面,在調試的時候發現,上傳到tomcat的圖片再重新部署之後就消失了。研究了半天發現才解決了。首先說一下,我為什麼要將圖片存放到tomcat伺服器或者更直白點說是web工程目錄下的原因:

項目中對於圖片的處理在於使用者上傳比如自己的頭像,上傳後再查看時,就直接根據伺服器的URL指定圖片的位置去查看圖片,通俗點就是jsp頁面中的<img >標籤的src屬性的路徑就直接指向伺服器該圖片存放的位置。鑒於這一點,所以將圖片檔案存放在了tomcat中,而不放在伺服器磁碟檔案系統中,這樣前端JSP就可以直接通過URL訪問到圖片資源。

發現的問題:在調試的時候,我的開發環境十分通用,就是eclipse for jee ,伺服器為tomcat7.0。在配置eclipse runtime伺服器運行環境時,工程發布的位置選擇的是直接將工程發布到tomcat的webapps目錄下。配置過程如下:

1.在為eclipse添加到tomcat7.0伺服器後,將伺服器的工程全部remove掉,如:

remove all,然後右鍵clean一下,這時再open,如

 

在server locations下選擇第二個,這時工程在ADD到伺服器時就直接到了tomcat 的webapps目錄下了。

 

遇到的問題:發現上傳的圖片在改動eclipse上的代碼的時候,也就是重新部署後,tomcat下的webapps中的工程目錄下的圖片全部沒有了,很奇怪,經過研究發現,原因如下:

我們在Java代碼中上傳圖片時,圖片的路徑是通過代碼

request.getSession().getServletContext().getRealPath("/img")

來擷取路徑的,而這句代碼返回的路徑是tomcat中webapps目錄下的工程路徑,圖片就直接儲存到了tomcat中。

當我們重新發布工程的時候,tomcat其實是先將原來的工程刪掉,然後再將改動過的新的工程放上去。而改動過的新的工程師來自與我們eclipse的工作空間中的工程,這就也難怪了,因為我們是把圖片直接上傳到的tomcat伺服器下,而不是放到工作空間的工程目錄下,自然重新部署後圖片就沒了。

 

解決辦法:

歸根到底的原因就是因為

request.getSession().getServletContext().getRealPath("/img")

這句代碼搞的鬼,所以在調試時,我們在Java代碼中儲存上傳的圖片位置時將圖片的儲存路徑應該儲存在eclipse工作空間的目錄下,如:

String path =  "E:\\program\\eclipse project\\Server\\WebContent\\img";

這樣,圖片在上傳到該工作空間後,因為項目發生了改變,eclipse會再次發布工程,這時圖片便會同步到tomcat伺服器中,這時,我們前端jsp頁面也就可以通過URL定位到圖片了。

 

注意的地方:

歸根到底這些問題其實還是因為我們是在調試的工程中,發布後肯定是不會出現這些問題的。因為你想想我們的web工程一般是發布到Linux下,發布了之後你的tomcat伺服器只有關閉和開啟,而不會對工程重新部署,自然也就不會出現這些問題。然後這也同時出現了另外一個問題,就是我們的web系統是在linux下,也不會有eclipse環境,那也就更不用談什麼工作空間了,所以如果在代碼中String path =  "E:\\program\\eclipse project\\Server\\WebContent\\img";這麼寫系統肯定會報錯咯。所以最終來說,改成這樣也只是權宜之計,方便我們在調試的時候用的,到項目正式發布的時候需要我們再將路徑改成request.getSession().getServletContext().getRealPath("/img")的。

圖片上傳到tomcat後突然消失

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.