作者: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)){//转换成多部分requestMultipartHttpServletRequest 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. 上传结果



