將Tomcat中儲存的檔案 對映到磁碟方法?
阿新 • • 發佈:2018-12-21
1.專案部署到tomcat中發現,由於以前的影象儲存及檔案上傳下載都是放在Tomcat中專案的WEB-INF下的upload以及PDF資料夾下,這樣也就導致每次重新部署需要都會將原來的影象覆蓋掉。之前的做法是 先備份這2個資料夾,部署解壓後的war包後 將備份的檔案替換掉,這樣的操作對於運維佈署人員 很不友好,網路上目前的解決方案是 將儲存在Tomcat專案部署路徑下的檔案,通過對映放到伺服器的磁碟檔案下,這樣就實現了專案部署與儲存檔案的分離。具體的做法如下(實際操作中出現 由於tomcat配置問題導致 磁碟中檔案修改,對映不到 需要重啟才能對映到的問題。後面通過重灌tomcat8解決)
2.首先是 影象檔案上傳路徑的修改
原來的影象檔案上傳 使用的Mulitipate進行檔案操作 ,檔案儲存的路徑是
通過獲取tomcat的 http請求獲取的位置+檔名=儲存路徑
request.getSession().getServletContext().getRealPath("/")+"/upload/picture"+fileName
新的上傳的位置=Tomcat磁碟對映的位置
String mapper_url=“D:\\\mapped\\”; String fileName = System.currentTimeMillis()+".jpg"; //檔名 String relative_path ="upload\\picture\\" +TextFormater.format(new Date(),TextFormater.DATE_PATTERN)+"\\"+fileName;//相對路徑 String absolute_path = mapper_url+relative_path;//檔案儲存絕對路徑
3.檔案下載及 影象顯示的修改
主要有2種方法實現 請求路徑到磁碟路徑的對映
3.1(無需重啟伺服器)通過配置Tomcat解壓目錄 conf/Catalina/localhost/
通過新增xxx.xml檔案(xxx為請求匹配路徑)
<Context docBase="D:\xxx\xxx" path="/xxx" reloadable="true"/>
3.2 通過配置conf目錄下server的配置,找到Host檔案下 新增配置
<Context docBase="D:\xxx\xxx" path="/xxx" reloadable="true"/>
通過以上2種方式的任一一種,即可實現 通過匹配tomcat請求路徑 對映到系統磁碟目錄的需求。