com.springsource.org.apache.commons.fileupload-1.2.0.jar
com.springsource.org.apache.commons.io-1.4.0.jar
<input type="file" name="myfile" enctype="multipart/form-datas">
//1、創建磁盤文件項工廠
//作用:設置緩存文件的大小 設置臨時文件存儲的位置
String path_temp = this.getServletContext().getRealPath("temp");
//DiskFileItemFactory factory = new DiskFileItemFactory(1024*1024, new File(path_temp));
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024*1024);
factory.setRepository(new File(path_temp));
//2、創建文件上傳的核心類
ServletFileUpload upload = new ServletFileUpload(factory);
//設置上傳文件的名稱的編碼
upload.setHeaderEncoding("UTF-8");
//ServletFileUpload的API
boolean multipartContent = upload.isMultipartContent(request);//判斷表單是否是文件上傳的表單
if(multipartContent){
//是文件上傳的表單
//***解析request獲得文件項集合
List<FileItem> parseRequest = upload.parseRequest(request);
if(parseRequest!=null){
for(FileItem item : parseRequest){
//判斷是不是一個普通表單項
boolean formField = item.isFormField();
if(formField){
//username=zhangsan
String fieldName = item.getFieldName();
String fieldValue = item.getString("UTF-8");//對普通表單項的內容進行編碼
System.out.println(fieldName+"----"+fieldValue);
//當表單是enctype="multipart/form-data"時 request.getParameter相關的方法
//String parameter = request.getParameter("username");
}else{
//文件上傳項
//文件的名
String fileName = item.getName();
//獲得上傳文件的內容
InputStream in = item.getInputStream();
String path_store = this.getServletContext().getRealPath("upload");
OutputStream out = new FileOutputStream(path_store+"/"+fileName);
IOUtils.copy(in, out);
in.close();
out.close();
//刪除臨時文件
item.delete();
}
}
}
}else{
//不是文件上傳表單
//使用原始的表單數據的獲得方式 request.getParameter();
}
} catch (FileUploadException e) {
e.printStackTrace();
}