在HandlerInterceptor的preHandle方法通过以下代码读取文件:
String hotBackupTempFile = "/home/file";
List<File> uploadFile = new ArrayList<>();
if (ServletFileUpload.isMultipartContent(request)){
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultiValueMap<String, MultipartFile> fileMap = multipartRequest.getMultiFileMap();
for (Map.Entry<String, List<MultipartFile>> entry : fileMap.entrySet()) {
for (MultipartFile m : entry.getValue()) {
String fileName = m.getOriginalFilename();
File tempFileFolder = new File(hotBackupTempFile);
if (!tempFileFolder.exists()) tempFileFolder.mkdirs();
File upload = new File(hotBackupTempFile + "/" + fileName);
m.transferTo(upload);
uploadFile.add(upload);
}
}
}
然后在controller就读不到文件了:
@ResponseBody
@RequestMapping("/add")
public JSON addFile(@RequestParam(value = "file",required = false) MultipartFile[] multipartFile) {}
如何才能实现重读读取文件?
很简单,不要使用
transferTo
。用
MultipartFile.getBytes
。