模板使用的是thymeleaf
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Title</title> </head> <body> <form method="POST" enctype="multipart/form-data" action="/upload"> <p>文件1:<input type="file" name="myfile"/></p> <p><input type="submit" value="单个上传"/></p> </form> <br/> <form method="POST" enctype="multipart/form-data" action="/batch/upload"> <p>文件1:<input type="file" name="file"/></p> <p>文件2:<input type="file" name="file"/></p> <p>文件3:<input type="file" name="file"/></p> <p><input type="submit" value="多个上传"/></p> </form> </body> </html>
controller
@Controller public class FileController { String filePath = "H://upload//"; /** * 上传页面 * @return */ @RequestMapping("/") public String toIndex() { return "upload"; } /** * 单个文件上传 * @param file * @return */ @PostMapping("/upload") @ResponseBody public String uploadFile(@RequestParam("myfile") MultipartFile file) { if (!ObjectUtils.isEmpty(file)) { upload(file); return "successful"; } else { return "file is empty...."; } } /** * 多个文件上传 * @param request * @return */ @PostMapping("/batch/upload") @ResponseBody public String uploadFiles(HttpServletRequest request) { List<MultipartFile> fileList = ((MultipartHttpServletRequest) request).getFiles("file"); fileList.stream().filter(file -> !ObjectUtils.isEmpty(file)).forEach(this::upload); return "successful"; } private void upload(MultipartFile file) { String filename = file.getOriginalFilename(); File dest = new File(filePath + filename); if (!dest.getParentFile().exists()) { dest.getParentFile().mkdirs(); } try { file.transferTo(dest); } catch (IOException e) { e.printStackTrace(); } } }