作者:ssslinppp
1. 摘要
前篇文章講解了單文件上傳《【Spring學習筆記-MVC-13】Spring MVC之文件上傳》
http://www.cnblogs.com/ssslinppp/p/4607043.html (請參考)。本文主要講多文件上傳的過程。
主要區別在於控制層代碼不同,同時,jsp代碼也有相應修改。
2. 添加jar包
- commons-fileupload-1.2.2.jar;
- commons-io-2.0.1.jar;
3. 配置CommonsMultipartResolver

說明:
- p:defaultEncoding="UTF-8":這里設置默認的文件編碼為UTF-8,必須與用戶JSP的默認編碼一致;
- p:maxUploadSize="5000000":指定文件上傳大小,單位為字節;
- p:uploadTempDir="upload/temp":文件上傳臨時目錄,上傳完成后,就會將臨時文件刪除;
說明:
- p:defaultEncoding="UTF-8":這里設置默認的文件編碼為UTF-8,必須與用戶JSP的默認編碼一致;
- p:maxUploadSize="5000000":指定文件上傳大小,單位為字節;
- p:uploadTempDir="upload/temp":文件上傳臨時目錄,上傳完成后,就會將臨時文件刪除;
4.控制層代碼


@RequestMapping(value = "/upload")
public String updateThumb(HttpServletRequest request,
HttpServletResponse response, ModelMap mmMap)
throws IllegalStateException, IOException {
// 創建一個通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
//判斷 request 是否有文件上傳,即多部分請求
if(multipartResolver.isMultipart(request)){
//轉換成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while(iter.hasNext()){
//取得上傳文件
MultipartFile file = multiRequest.getFile(iter.next());
//對上傳文件進行處理
if(!file.isEmpty()){
String path = request.getSession().getServletContext()
.getRealPath("upload");
String fileName = file.getOriginalFilename();
File targetFile = new File(path, fileName);
if(!targetFile.exists()){
targetFile.mkdirs();
}
//保存
try {
file.transferTo(targetFile);
System.out.println("保存文件【"+file.getOriginalFilename()+"】完成...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
return "success";
}
5. 前台JSP

6. 上傳結果




其他
附件列表