解決當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"就解決了這個問題.