在以前只是进行了单一的文件上传,可是在不少的状况下是有可能要传递多个文件的,因此这个时候首先要解决的一个问题就是表单里面须要提供有多个上传的项,然后在控制器上再进行一些简单的处理javascript
1.修改上传表单:html
upload_page.htmljava
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>SpringBoot模版渲染</title> <script type="text/javascript" th:src="@{/js/main.js}"></script> <link rel="icon" type="image/x-icon" href="/images/mldn.ico"/> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> </head> <body> <form th:action="@{/upload}" method="post" enctype="multipart/form-data"> 姓名:<input type="text" name="name"/><br/> 照片:<input type="file" name="photo"/><br/> 照片:<input type="file" name="photo"/><br/> 照片:<input type="file" name="photo"/><br/> <input type="submit" value="上传"/> </form> </body> </html>
2.修改控制器中的参数接收,这个地方须要一点点特殊处理web
package cn.mldn.microboot.controller; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import cn.mldn.microboot.util.controller.AbstractBaseController; @Controller public class UploadController extends AbstractBaseController { @RequestMapping(value = "/uploadPre", method = RequestMethod.GET) public String uploadPre() { // 经过model能够实现内容的传递 return "upload_page"; } @RequestMapping(value = "/upload", method = RequestMethod.POST) @ResponseBody public String upload(String name, HttpServletRequest request) { if (request instanceof MultipartHttpServletRequest) { // 若是你如今是MultipartHttpServletRequest对象 MultipartHttpServletRequest mrequest = (MultipartHttpServletRequest) request; List<MultipartFile> files = mrequest.getFiles("photo"); Iterator<MultipartFile> iter = files.iterator(); while (iter.hasNext()) { MultipartFile photo = iter.next() ; if (photo != null) { // 如今有文件上传 System.out.println("【*** 文件上传 ****】name = " + name); System.out.println( "【*** 文件上传 ****】photoName = " + photo.getName()); System.out.println("【*** 文件上传 ****】photoContentType = " + photo.getContentType()); System.out.println( "【*** 文件上传 ****】photoSize = " + photo.getSize()); } } } return "upload-file"; } }
多个上传文件的信息要经过spring包裹的request对象得到。spring