0%

SpringBoot无需配置文件上传

  之前有个需求就是拦截上传请求,但是框架用的是SpringBoot。所以常规的拦截方法调用Apache Commons FileUpload无法成功。SpringBoot中有默认的文件上传组件,在使用ServletFileUpload时需要关闭Spring Boot的默认配置 ,所以在配置文件中添加

1
spring.http.multipart.enabled=false

  这样虽然调用成功,但是又影响正常的上传功能。使用SpringBoot默认的文件上传组件,又需要更改配置文件,否则各种报错。但是这个拦截的需求是放在通用的拦截器上,可以配置不同的系统。所以还是不行。
  最后在网上找了好久,东拼西凑,看了各种源码终于找到了一种方法可以无需配置文件就可以获得上传请求时的各种参数,遂记录之。

1
2
3
4
5
6
7
8
9
try {
HttpServletRequest request1 = (HttpServletRequest) request;
CommonsMultipartResolver CommonsMultipartResolver = new CommonsMultipartResolver(request1.getSession().getServletContext());
MultipartResolver resolver = CommonsMultipartResolver;
MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request1);
Collection<Part> parts = multipartRequest.getParts();
for (Part part: parts) {
String filename=part.getSubmittedFileName();
}

  使用的是Spring框架自己的上传组件,最后成功获得上传文件名等参数。