之前介紹servlet3.0新特性的時候有提到過servlet API提供了一個part類來實現(xiàn)對文件的上傳和保存,Struts其實是在其基礎上做了進一步的封裝,更加簡單易用。至于文件下載,Struts貫徹AOP 思想,在下載之前提供對用戶權限控制的API。下面我們將詳細介紹上傳和下載的相關內容。

一、Struts文件上傳機制
     想要實現(xiàn)文件上傳功能,頁面的表單的method屬性必須被指定為post,還有enctype屬性必須為multipart/form-data,該值表示上傳的內容將會以二進制的形式被上傳到服務器,至于該屬性的其他值的作用及他們之間的區(qū)別,請查看之前文章:servlet3.0新特性。下面給出表現(xiàn)層頁面代碼:

  <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