[Struts2]Struts2的文件上傳

添加文件上傳的選擇項
1. 客戶端三個注意事項
* method="post"
* enctype="multipart/form-data"
* <input type="file" name="myfile">

2. Struts2框架的使用攔截器完成了文件上傳,並且底層使用也是FileUpload開源的組件。
* 提供 FileUpload 攔截器,用於解析 multipart/form-data 編碼格式請求,解析上傳文件的內容 
* fileUpload攔截器 默認在 defaultStack 棧中, 默認會執行的 

* 在Action中編寫文件上傳,需要定義三個屬性
> 文件類型File ,屬性名與表單中file的name屬性名一致.
> 字符串類型String , 屬性名:前段是name屬性名一致 + ContentType;
> 字符串類型String , 屬性名:前段是name屬性名一致+FileName;

> 最後需要爲上述的三個屬性提供set方法。
> 可以通過FileUtils提供 copyFile 進行文件複製,將上傳文件 保存到服務器端

3. 文件上傳中存在的問題
* 先配置input邏輯視圖
* 在頁面中顯示錯誤信息

* 文件上傳的總大小默認值是2M,如果超過了2M,程序會報出異常。可以使用<s:actionError>來查看具體信息!
> 解決總大小的設置,找到常量:
* struts.multipart.parser=jakarta-- 默認文件上傳解析器,就是FileUpload組件
* struts.multipart.saveDir=-- 文件上傳的臨時文件存儲目錄
* struts.multipart.maxSize=2097152-- 文件上傳的最大值(總大小),默認是2M

> 可以在struts.xml中設置常量,修改文件上傳的默認總大小!!!
* <constant name="struts.multipart.maxSize" value="5000000"></constant>

4. 還可以通過配置攔截器來設置文件上傳的一些屬性
* 先在<action>標籤中引入文件上傳的攔截器
<interceptor-ref name="defaultStack">
<!-- 設置單個上傳文件的大小 -->
<param name="fileUpload.maximumSize">2097152</param>
<!-- 設置擴展名 -->
<param name="fileUpload.allowedExtensions">.txt</param>
</interceptor-ref>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章