Struts2學習(六)———— 檔案上傳和下載
一、單檔案上傳
在沒學struts2之前,我們要寫檔案上傳,非常麻煩,需要手動一步步去獲取表單中的各種屬性,然後在進行相應的處理,而在struts2中就不需要了,因為有一個fileUpload攔截器幫我們全做完了。我們只需要新增一點點資訊,就可以完成上傳的功能。
1、Action中需要提供三個屬性
File fieldName; //檔案表單項名稱,也就是上傳控制元件所填寫的name屬性名
String fileContentType; //file就使用的檔案表單項名和固定ContentType,代表獲取上傳檔案的型別
String fileFileName; //file同樣是fieldName+FileName(固定),代表上傳檔案的檔名
比如有<input type=”file” name=”myUpload”/> 表單項名稱為: myUpload, 那麼在action中的三個屬性分別為
myUpload myUploadContentType myUploadFileName
2、在struts.xml中設定上傳的一些配置資訊,
設定常量(可選)
struts.multipart.parser:指定使用的上傳元件,預設值為jakarta,表示使用commons-fileupload元件,Struts2還支援cos和pell
struts.multipart.saveDir:臨時目錄,預設為Tomcat中的work目錄
struts.multipart.maxSize:整個請求大小限制,預設值為2097152b(1b等於8bit,1kb=1024byte,1M=1024kb), 也就是2M,這個是限制整個請求的大小,而不是單一檔案的大小
fileUploadl攔截器三個引數(action中以param來設定值,可選)
maximumSize:上傳的單個檔案的大小限制 預設2M
allowedTypes:允許上傳檔案的型別,多個型別以逗號隔開 如果不指定,預設允許任何型別的檔案上傳
allowedExtensions:允許上傳檔案的副檔名,多個副檔名以逗號隔開 如果不指定,預設允許任何型別的檔案上傳
3、jsp頁面中form表單的enctype需要指定為 enctype="multipart/form-data"
4、前面3步完成後,只需要在action中建立儲存上傳檔案的位置,然後將其放入進去即可,fileUpload攔截器已經幫我們將各種引數獲取到了。
JSP
struts.xml
action
上傳的檔案會放置在tomcat中該專案的WEB-INF的pictrue資料夾下。
二、多檔案上傳
會有兩種解決方案
第一種,比較煞筆的,多寫幾個上傳框,類似這樣
jsp 注意name要同名
action
這樣就可以選擇多個檔案同時上傳了,但是我是從來沒見過這種多檔案上傳的,哈哈,所以用第二種方式,只有一個上傳框,能同時選取多個檔案一起上傳,
第二種:使用 uploadify 外掛
三、檔案下載。
在講解strust.xml中的action的resultType時就講過一個stream的結果型別,該型別就是用來下載的。
strust.xml
action
需要編寫getPic(),和getFileName()這兩個方法,一個是獲取輸入流,一個是獲取中文名。其他的該怎麼寫就怎麼寫。