Struts2本身提供了一個文件上傳的攔截器,通過配置該攔截器可以更輕鬆地實現文件過濾。我們只需要在Action中配置該攔截器就可以了。當文件過濾失敗後,會自動轉向input邏輯視圖,因此必須爲該Action配置名爲input的邏輯視圖,除此之外還必須爲配置defaultStack的攔截器的引用。配置文件如下: <action name="upload" class="com.annlee.upload.UploadAction" > <!-- 配置fileUpload的攔截器 --> <interceptor-ref name="fileUpload"> <!-- 配置允許上傳的文件類型 --> <param name="allowedTypes">image/bmp,image/gif,image/jpg</param> <!-- 配置允許上傳的文件大小 --> <param name="maximumSize">2000000</param> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> <param name="savePath">/</param> <result>/common/succ.jsp</result> <result name="input">/cos_fileupload/fileupload.jsp</result> </action> 如果上傳失敗系統會返回到原來的頁面,要在原來的頁面上加上以下錯誤提示代碼: <s:fielderror />這樣系統就會返回提示給用戶,但是這時的提示是Struts2自帶的提示,非常不友好,我們可以國際化資源裏配置以下兩項,我們的提示就會自動替換Struts2的提示,提示的關鍵字如下 struts.messages.error.file.too.large struts.messages.error.content.type.not.allowed 此外,如果用戶上傳失敗的原因不是因爲以上兩種還有另外的一個信息提示用戶,它的關健字是:struts.messages.error.uploading,我們也應該替換這個提示信息。 其它說明:如果沒有指定臨時的保存文件夾,系統就會使用javax.servlet.context.tempdir路徑,這個路徑是Tomcat的work/Catalina/localhost/,我們應該設置自己的路徑,這個配置的屬性爲struts.multipart.saveDir可以在struts.properties中配置,還有一個文件上傳的屬性:struts.multipart.maxSize設置整個表單請求內容的最大字節數。