使用Springboot的上传文件的时候,出现了一个问题 :
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload fileUpload = new ServletFileUpload(factory);
//设置所上传文件的大小
fileUpload.setSizeMax(100 * 1024 * 1024);
List<FileItem> fileItems = null;
if (ServletFileUpload.isMultipartContent(request)) {
//从request请求中取出文件列表
fileItems = fileUpload.parseRequest(request);
}
其中upload.parseRequest(request)获取的列表size为空,查找了很多资料,例如在配置文件中配置spring:http:multipart:enabled:false等,均不起作用。虽然后来修改入参为MultipartFile类型使用postman可以正常请求,但前端调用还是不能正常请求,只能另找方法。
后来通过查找资料,可以通过将HttpServletRequest转为MultipartHttpServletRequest的方式获取文件,尝试一下,成功。下面是改造的代码:
//将HttpServletRequest转为MultipartHttpServletRequest
StandardServletMultipartResolver resolver = new StandardServletMultipartResolver();
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request);
//取文件
MultipartFile file = multipartRequest.getFile("file");
说明:以上只适用于获取一个文件的情况,不支持多文件获取。
版权声明:本文为qq_24615449原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。