關於struts文件上傳遇到只有文件值沒有接收到以及文件消失的解決方案

昨天我在進行struts文件上傳的時候困擾了一晚上,讓我很鬱悶,就是說:一旦開始文件上傳的時候就遇見報struts.xml文件的配置錯誤,這就讓我很是鬱悶,struts的配置文件命名就沒有錯誤,爲什麼會報錯呢,於是我就上網去查,試過了很多方法,發現都不能解決問題,弄了一晚上也沒有弄出來,最後在無意中發現原來是struts的注入規範問題。

在傳統的servlet會通過servlet來獲取參數值,但是在struts22裏面就不一樣了,是要依賴注入的,就是說會把文件數據放到對應的規定好的對象成員變量裏面,注意,我已經說了,是規定好的,就是說,這個成員變量的名稱不絕對不能隨便改變的,一般來說會有如下的規範:

文件本身:表單中的名稱; 這個我就遇到了問題,導致取出的是無效值

文件的名稱:表單中的名稱+FileName

文件的類型:表單中的名稱+ContentType;

這個過程中一般是不會犯錯誤的,但是會無意中引錯包,這樣就導致了看着代碼似乎沒有說明問題,但是實際上是不可行的。如果不知道這個問題,是很難通過其他方法發現或者解決的

解決的方法也非常的容易,那就是把已經引入的包全部刪掉,全部使用IO包。這樣就不會出現錯誤


另外當struts把所有的屬性都注入進來之後,就可以進行文件傳輸了,文件傳輸可以使用最底層的IO流操作,也可以使用自帶jar集成的方法來實現文件上傳

FileUtils.copyFile(源值, 目標值);


另外還有注意的是如果把文件放在應用的目錄下那麼就會發生重啓tomcat的時候上傳的文件消失的情況,那麼取決的方法就是把文件最好放到tomcat的目錄之外,而且安全高效。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章