之前介紹servlet3.0新特性的時候有提到過servlet API提供了一個part類來實現對文件的上傳和保存,Struts其實是在其基礎上做了進一步的封裝,更加簡單易用。至于文件下載,Struts貫徹AOP 思想,在下載之前提供對用戶權限控制的API。下面我們將詳細介紹上傳和下載的相關內容。
一、Struts文件上傳機制
想要實現文件上傳功能,頁面的表單的method屬性必須被指定為post,還有enctype屬性必須為multipart/form-data,該值表示上傳的內容將會以二進制的形式被上傳到服務器,至于該屬性的其他值的作用及他們之間的區(qū)別,請查看之前文章:servlet3.0新特性。下面給出表現層頁面代碼:
<body> <s:form method="post" enctype="multipart/form-data" action="/upload"> <s:file name="ufile" label="瀏覽"/> <s:submit value="上傳"/> </s:form> </body>
實際上在Struts的文件上傳中,它使用三個Action屬性來描述被上傳的文件。commons-fileupload-1.3.2.jar和commons-io-2.2.jar這兩個包就是用于輔助表單上傳的內容賦值到action屬性中,所以在使用Struts的文件上傳之前應當先包含著兩個包到項目中。下面給出upload對應的action:
public class UploadFile extends ActionSupport { //封裝的上傳文件的文件內容 private File ufile; //封裝的上傳文件的文件名 private String ufileFi