1. 程式人生 > >Struts2學習(六)———— 檔案上傳和下載

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()這兩個方法,一個是獲取輸入流,一個是獲取中文名。其他的該怎麼寫就怎麼寫。