實現文件上傳的form表單必須滿足兩個條件:method="post" enctype="multipart/form-data"
表單中enctype="multipart/form-data"的意思是設置表單的MIME編碼。默認情況,這個編碼格式是application/x-www-form-urlencoded,不能用於文件上傳;只有使用了multipart/form-data,才能完整的傳遞文件數據。enctype="multipart/form-data"是上傳二進制數據; form裡面的input的值以二進制的方式傳過去。所以request就得不到值了, 也就是說加了這段代碼,用request就會傳遞不成功。
取表單字段值時,用下面的方式:
SmartUpload su = new SmartUpload(); //新建一個SmartUpload對象 su.getRequest().getParameterValues(String name); //取數組值 su.getRequest().getParameter(String name); //取單個參數單個值
注:在使用SmartUpload時需要添加相應的jar包
String softname=su.getRequest().getParameter("softname");
注意:一定要在su.upload();,之後使用,才可以獲得值!!
<span style="font-size:14px;">public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
SmartUpload mySmartUpload = new SmartUpload();
try{
// Initialization
mySmartUpload.initialize(config,request,response);
mySmartUpload.setMaxFileSize(10*1024*1024);//限制上傳文件的大小
//mySmartUpload.setAllowedFilesList("txt,html,jpg,js");//設置允許上傳的文件類型
mySmartUpload.setDeniedFilesList("exe,doc");//設置禁止上傳的文件列表
mySmartUpload.upload();
String hString = mySmartUpload.getRequest().getParameter("name1");
//System.out.println(hString);
//System.out.println(mySmartUpload.getFiles().getCount());
for(int i = 0 ;i <mySmartUpload.getFiles().getCount();i++){//多個文件的上傳
File file = mySmartUpload.getFiles().getFile(i);
if(file.getSize()!=0){
//拼湊上傳文件的新名稱
String fileNameString = System.currentTimeMillis()+"."+file.getFileExt();
//通過servlet的實際路徑拼湊上傳文件的保存路徑,實際使用需要修改此路徑
String path = "/upload123123"+java.io.File.separator+fileNameString;
file.saveAs(path);
}
Thread.sleep(100);
/*下載文件的語句
mySmartUpload.downloadFile("/路徑"+"文件名稱");*/
}
}catch(Exception e){
e.printStackTrace();
}
}</span>