Struts2中的struts.multipart.saveDir的配置

Struts2中的struts.multipart.saveDir主要是用來設置上傳文件的臨時存放地址,而這個參數設置方法的不同對應的地址也不同。 

1、如果沒有設置struts.multipart.saveDir,那麼將默認使用javax.servlet.context.tempdir指定的地址,javax.servlet.context.tempdir的值是由服務器來確定的,例如:假如我的web工程的context是sencha,服務器使用Tomcat,那麼savePath就應該是%TOMCAT_HOME%\work\Catalina\localhost\sencha,臨時文件的名稱類似於upload__1a156008_1373a8615dd__8000_00000001.tmp,每次上傳的臨時文件名可能不同,但是大致是這種樣式。而且如果是使用Eclipse中的Servers裏面配置Tomcat並啓動的話,那麼上面地址中的%TOMCAT_HOME%將不會是系統中的實際Tomcat根目錄,而會是Eclipse給它指定的地址,例如我本地的地址是這樣的:E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\sencha\upload__1a156008_1373a8615dd__8000_00000001.tmp。

2、如果設置了struts.multipart.saveDir,例如在struts.xml中設置:
Xml代碼  收藏代碼
  1. <constant name="struts.multipart.saveDir" value="/repository"/>  
那麼文件存放的地址不會是大家想當然的在web工程的repository目錄下,網上有人說在D盤下也就是D:\repository,但是我沒有D盤,我本地的savePath是E:\repository,所以應該是選取非C盤的第一個邏輯磁盤創建struts.multipart.saveDir指定的文件夾並存放臨時文件。 

3、如果設置了struts.multipart.saveDir但是value中並沒有"/",就像這樣:
Xml代碼  收藏代碼
  1. <constant name="struts.multipart.saveDir" value="repository"/>  
,那麼repository文件夾會創建在user.dir位置下,使用Eclipse環境時,user.dir爲我本地Eclipse的根目錄E:\Program Files\Indigo,你可以通過System.getProperty("user.dir")查看,所以savePath就是E:\Program Files\Indigo\repository,在Tomcat下user.dir是Tomcat目錄下的bin目錄,所以應該是%TOMCAT_HOME%\bin\repository。 

4、乾脆使用絕對路徑,這樣就不會有任何問題了,哈哈!

轉自:http://mossad.iteye.com/blog/1522905
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章