java上傳組件commons-fileupload的一些使用方法

來源:互聯網
上載者:User

            在 http://www.apache.org,下載commons-fileupload-1.2.1.jar包,並把這個包加到工程中,以下是記錄這個上傳組件的一些使用方法。

         html測試頁面,實現上傳兩個檔案,並填寫四個參數。

 

<form  action="../FileServlet" enctype="multipart/form-data" method="post" >
 <dt>本人名稱:</dt> <dd><input type="text" name="name"  class="file-input" />dd> <dt>銀行賬戶:</dt> <dd>< <input type="text" name="account"  class="file-input" /></dd> <dt>開戶銀行:</dt> <dd>< <input type="text" name="bank"  class="file-input" /><dd> <dt>社會安全號碼:</dt> <dd> <input type="text" name="number"  class="file-input" /></dd> <dt>身份證照片:</dt> <dd><input type="file" name="photo"  class="file-input" /></dd> <dt>銀行卡照片:</dt> <dd> <input  type="file" name="card"  class="file-input" /> </dd>
</form> 

 

         在上傳檔案的時候,form表單的entype必須是multipart/form-data,這種情況下,在台通過request.getParameter();方法就無法獲得參數,返回的都是空值。所以這裡就不能再使用getParameter()這個方法,下面介紹一下commons-fileupload裡的一些方法。

          首先把請求訊息實體中的每一個項目封裝成單獨的DiskFileItem(FileItem的實現)對象,這是通過使用實現了org.apache.commons.fileupload.FileItemFactory介面的org.apache.commons.fileupload.DiskFileItemFactory來完成的,當上傳的檔案比較小時,可直接儲存在記憶體中,這樣速度比較快,當檔案較大時使用臨時檔案快取。代碼如下

   FileItemFactory factory= new DiskFileItemFactry();

   ServletFileUpload upload = new ServletFileUpload(factory);   //獲得ServletFileUpload 對象upload

List<FileItem> listItem = upload.parseRequest(request);           //解析request,把每個項目封裝成單獨的FileItem

//遍曆listItem

for (FileItem item : listItem) {
    if(!item.isFormField()){//說明這個項目是個檔案,上傳到伺服器
     String fileName = item.getName();  //這個名字檔案的完整路徑名
      String fileUploadName = fileName.substring(fileName
       .lastIndexOf("\\") + 1);  //獲得檔案的名字,不包含路徑
     item.write(new File(path, fileUploadName));  //寫入磁碟,path是檔案的寫入路徑
    }else{//這個項目就是一個參數可以擷取

           

           String filed = item.getFieldName();  //獲得這個參數名
           if (filed.equals("bank")) { //根據判斷獲得參數值,並賦給已聲明的變數
                 bank = item.getString();
            }
          if (filed.equals("number")) {
                 number = item.getString();
     
           }
          if (filed.equals("account")) {
                account = item.getString();

          }

 

   }

}

      這樣,即上傳了檔案,也擷取到了頁面參數。                   

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.