標籤:工程師 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後突然消失