FORM的ENCTYPE="multipart/form-data" 時request.getParameter()值為null問題的解決


解決當FORM的ENCTYPE="multipart/form-data" 時request.getParameter()獲取不到值的方法

 

使用jspsmartupload表單中enctype="multipart/form-data"的意思,是設置 表單的MIME編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了 multipart/form-data,才能完整的傳遞文件數據

但是設置了 enctype="multipart/form-data" ,除了file類型表單能獲取到,其他value通過request.getParameter都得不到。這種情況下我們可以利用組件來解決該問題,例如用 jspsmartupload組件

   com.jspsmart.upload.SmartUpload su = new   com.jspsmart.upload.SmartUpload();
   su.initialize(pageContext);
   su.service(request, response);
   su.setTotalMaxFileSize(100000000);
   su.setAllowedFilesList("zip,rar");
   su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
   su.upload();

   String Name = su.getRequest().getParameter("Name");
   String TYPE_ID = su.getRequest().getParameter("Type");

通過 su.getRequest().getParameter("value");就可以了,su.upload()好象必須放在前面,測試中將su.upload()放在獲取參數后面不成功。

 

 

關於用jspSmartUpload控件上傳文件並附帶參數的吐血體驗

url:http://blog.csdn.net/thinker28754/archive/2007/05/26/1626844.aspx

 
用於上傳數據的表單:

<form name="form1" method="post" action="servlet/Upfile" enctype="multipart/form-data">
<p>請輸入手機號</p>
<p>
 <input type="text" name="phone" value="1234567890"/>
</p>
<p>圖片上傳(僅現於*.gif和*.jpg文件)</p>
<p>
<input type="file" name="file1"/>
</p>


<p>
<input type="submit" name="submit" value="· 提交 ·"/>
</p>
</form>

提交的后台的servlet

SmartUpload su =new SmartUpload();
 
  su.initialize(this.getServletConfig(), request, response);
 
  String realPath = this.getServletContext().getRealPath("");
  String path=realPath+"/images";
 
    su.setAllowedFilesList("gif,jpg");
  su.upload();
  int count=su.save(path);
 
  msdnid=su.getRequest().getParameter("phone");//注意這是接收表單傳過來的參數
  System.out.println("msdnid="+msdnid);

////////////////////////////////////////////////////////////////////////////////////////////////////////////////

特別說明:用於接收表單參數的語句一定要放在su.upload();語句的后面,也就是說要在文件上傳后再接收,否則

不管你怎么試接收到的結果總是"null".

這是我在苦苦試了一天在暈到前的2分鍾試出來的,真的不容易呀!!!!!

在上述問題得到解決后,當所傳的參數為漢字時則接收到的全是亂碼,經過反復實驗將表單頁面的編碼格式設成"gb2312"就解決了這個問題.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM