1. 程式人生 > >struts2(六) 文件上傳和下載

struts2(六) 文件上傳和下載

multipart 添加 cos maxsize 上傳控件 eight upload 之前 方法

      前面對文件下載提過一點點,這裏正好要講文件上傳,就放在一起在說一遍。

                      --WH

一、單文件上傳

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

         技術分享

struts2(六) 文件上傳和下載