Springboot解决入参HttpServletRequest获取文件失败问题

        使用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版权协议,转载请附上原文出处链接和本声明。