最近在做項目的時候用jspsmartupload上傳文件,但是發現一個問題,用request.getParameter("name") 不能獲得表單的數據,最後終於解決,留篇文章。
原因很簡單:
因為你用jspsmartuploadsmart時post請求 的格式是multipart/form-data,即enctype="multipart/form-data" ,這和默認form提交是不同的
不同主要體現在:傳送到服務器端的數據組織格式不同,就是說協議不一樣(在3W官網上能找到相關格式說明文件)。 而現在的WEB容器對HttpServletRequest 方法getParameter(str)的實現都是按照默認協議。這也就難怪直接用request.getParameter()取到的值為null了。
解決方法是:
用smartupload裡已經提供了專門的方法,
不能用普通的request.getParameter()
而要用upload.getRequest()就可以使用了
例子:
SmartUpload su = new SmartUpload();
// 上傳初始化
su.initialize(pageContext);
// 設定上傳限制
// 1.限制每個上傳文件的最大長度。
// su.setMaxFileSize(10000);
// 2.限制總上傳數據的長度。
// su.setTotalMaxFileSize(20000);
// 3.設定允許上傳的文件(通過擴展名限制),僅允許doc,txt文件。
//su.setAllowedFilesList("xml");
// 4.設定禁止上傳的文件(通過擴展名限制),禁止上傳帶有exe,bat,jsp,htm,html擴展名的文件和沒有擴展名的文件。
// su.setDeniedFilesList("exe,bat,jsp,htm,html,,");
// 上傳文件
su.upload();
String softname=su.getRequest().getParameter("softname");
注意:一定要在su.upload();,之後取得!!
本文出自“實踐記錄”