問題:
項目涉及到用戶頭像,圖片等信息,這些圖片保存在項目中不方便,於是將選擇保存在某個磁盤的一個文件夾中,例如 c:/files
這樣的話,使用全路徑會相應的有些不方便,領導覺得不安全;
參考文檔: https://blog.csdn.net/qq_39135287/article/details/82055549
解決辦法:
1.選擇在tomcat中配置虛擬路徑,打開tomcat目錄找到配置文件夾 "conf " -->"server.XML"
建議用某個文本編輯器(記事本格式亂,不建議使用 這裏用Notepad++)
2.配置文件的路徑
打開 server.xml 文件,在
<host>
<!--這個標籤,在這個標籤中加一句話 虛擬文件路徑配置 -->
<Context path="/相對路徑" docBase="盤符:/文件夾"></Context>
</host>
3.可以試試了,還是不可以繼續下面的操作
加入虛擬路徑後進行訪問,http://localhost:8080//upLoadImage/patientpicture/1314.jpg (圖片名),結果卻發現仍然訪問不到,找了很多原因,大多數介紹圖片上傳的都是這樣介紹的,可是總出不來,折騰了,百度了,找到原因:eclipse對tomcat支持有時不是那麼友好,單修改tomcat配置可能沒有用,於是試着去用eclipse對tomcat進行配置管理,果然一下就成功了,eclipse配置tomcat方法如下:
4、添加圖片訪問路徑 (Document base 是你存放圖片的路徑 Path 是你訪問圖片的虛擬路徑 )
5.配置結束,點擊重啓服務器,輸入虛擬路徑 http://localhost:8080/upLoadImage 訪問資源文件夾:發現打不開,因爲路徑不完整,沒有具體哪個圖片頭上 例如 http://localhost:8080//upLoadImage/patientpicture/1314.jpg
看到網上又說一直放在項目中或者tomcat中:
這種方式簡單,好用,但是對應要經常發版升級的來說就很不方面,文件在項目裏 發版升級替換war時文件就會被替換掉
網友的經歷:之前寫的一個小項目,用到了圖片上傳到服務器,然後就開始嘗試着去實現這個功能,最初的做法是把圖片上傳到項目的WEB-INF文件夾的image文件夾中,可以實現圖片上傳到服務器,可是之後卻發現了一個問題,就是重啓tomcat服務器,之前上傳到服務器的圖片都不見了,這就讓我鬱悶了很久。
經過研究發現:
我們在Java代碼中上傳圖片時,圖片的路徑是通過代碼 request.getSession().getServletContext().getRealPath("/img") 來獲取路徑的,而這句代碼返回的路徑是tomcat中webapps目錄下的工程路徑,圖片就直接保存到了tomcat中。當我們重新發布工程的時候,tomcat其實是先將原來的工程刪掉,然後再將改動過的新的工程放上去。而改動過的新的工程師來自與我們eclipse的工作空間中的工程,這就也難怪了,因爲我們是把圖片直接上傳到的tomcat服務器下,而不是放到工作空間的工程目錄下,自然重新部署後圖片就沒了。
那麼有什麼方法能夠保存這些上傳到服務器的圖片呢?通過網上查找資料,最終找到了解決方法那就是配置圖片的虛擬路徑,接下來就讓我給大家講解一下如何配置虛擬路徑吧
最近在網上發現另外一種解決辦法,我在這裏補充說明一下:
有的人可能會遇到這樣的問題:那就是在 tomcat → conf → server.xml 配置文件中添加了圖片的虛擬路徑 <Context docBase="D:\GroupSystem" path="/photo" reloadable="true" />,但是當你重啓eclipse項目,再去打開tomcat → conf → server.xml 配置文件時,發現裏面的內容又會自動還原成原來默認的配置,這也就意味着你之前配置的圖片虛擬路徑不存在了,從而導致你配置的圖片虛擬路徑不起作用。
爲什麼我們配置的server.xml文件會被自動還原成原來默認的配置呢?
在網上找了好幾種方式,每次clean了tomcat後,自動還原成原來默認的配置。這是因爲你的eclipse在整合Tomcat成功之後,會在你的eclipse視窗的Pagekage Explorer中自動生成一個Servers文件夾,Servers文件夾中也會有一個server.xml的文件,每一次重啓eclipse項目,eclipse中的server.xml都會去覆蓋掉 tomcat → conf → server.xml 配置文件,所以當你在遇到這類問題的時候,我們可以試着去修改eclipse中的server.xml文件配置。
說了這麼多,接下來就讓我給大家講解一下如何操作吧
一、 打開你的eclipse,在eclipse視窗的Pagekage Explorer中找到Servers → Tomcat v8.0 Server at localhost-config → server.xml文件
二、雙擊打開server.xml配置文件,找到<Host></Host>標籤,在Host標籤中添加 (這裏的圖片我存放在 D:\GroupSystem的文件夾中)
<Context docBase="c:\files" path="/upLoadImage" reloadable="true"/>
配置方法如下圖:
三、右鍵Tomcat v8.0 Server at localhost [Stopped, Republish],選擇Start,啓動Tomcat(找到並點擊Console選項,能看到最後一行Server startup in 1889 ms 則表示Tomcat啓動成功)
四、然後我們找到tomcat下的conf文件夾,打開server.xml配置文件,可以看到server.xml配置文件中的<Host></Host>標籤自動添加了我們剛剛配置的圖片虛擬路徑
五、我們再去Eclipse中,雙擊Servers選項中的Tomcat v9.0 Server
六、點擊Overview視窗中的Modules
七、可以看到,在Web Modules中也自動添加了我們剛剛配置的圖片虛擬路徑