添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

使用 MultipartHttpServletRequest resolveMultipart = commonsMultipartResolver.resolveMultipart(request);

出现 resolveMultipart.getFile("file"); 打印null,无法获取文件参数

CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
commonsMultipartResolver.resolveMultipart(request);
MultipartHttpServletRequest resolveMultipart = commonsMultipartResolver.resolveMultipart(request);
System.out.println(commonsMultipartResolver.isMultipart(request));
// 这里打印了null ,前端检查没有错误字段也是对的
System.out.println(resolveMultipart.getFile("file"));

/**
*TODO  resolveMultipart.getFile("file") 获取上传文件时为null
*  原因:spring-boot自带的org.springframework.web.multipart.MultipartFile和Multipart产生冲突,如果同时使用了MultipartResolver 和ServletFileUpload,就会在iter.hasNext()返回false.然后整个循环就跳出去了。
*  整个问题产生的原因是Spring框架先调用了MultipartResolver 来处理http multi-part的请求。这里http multipart的请求已经消耗掉。
*  后面又交给ServletFileUpload ,那么ServletFileUpload 就获取不到相应的multi-part请求。因此将spring-boot自带的multipartResolve配置去除,问题就解决了
*  MultiPartFile获取不到文件为null
*  解决方法一: 在spring-boot配置文件application.yml  禁用spring-boot自带的org.springframework.web.multipart.MultipartFile,
*       Spring Boot 2.0.0 以下版本配置  spring.http.multipart.enabled=false  禁用自带的 multipart
*       Spring Boot 2.0.0 或更高版本配置  spring.servlet.multipart.enabled=false  禁用自带的 multipart
*  解决方法二: 在Application 启动文件中配置 排除项  @SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
*
**/

解决办法一:(配置application.yml文件)

  ## resolveMultipart.getFile("file") 获取上传文件时为null
  ## 原因:spring-boot自带的org.springframework.web.multipart.MultipartFile和Multipart产生冲突,如果同时使用了MultipartResolver 和ServletFileUpload,就会在iter.hasNext()返回false.然后整个循环就跳出去了。
  ## 整个问题产生的原因是Spring框架先调用了MultipartResolver 来处理http multi-part的请求。这里http multipart的请求已经消耗掉。
  ## 后面又交给ServletFileUpload ,那么ServletFileUpload 就获取不到相应的multi-part请求。因此将spring-boot自带的multipartResolve配置去除,问题就解决了
  ## MultiPartFile获取不到文件为null
  ## 解决方法一: 在spring-boot配置文件application.yml  禁用spring-boot自带的org.springframework.web.multipart.MultipartFile,
  ## 解决方法二: 在Application 启动文件中配置 排除项  @SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
  ## spring.http.multipart.enabled已被替换为spring.servlet.multipart.enabled
  ## 如果您使用的是Spring Boot 2.0.0或更高版本,则应该使用spring.servlet.multipart.enabled
  ## 解决办法:Spring Boot 2.0.0 以下版本配置  spring.http.multipart.enabled=false  禁用自带的 multipart
#  http:
#    multipart:
#      enabled: false
  ## 解决办法:Spring Boot 2.0.0 或更高版本配置  spring.servlet.multipart.enabled=false  禁用自带的 multipart
#  servlet:
#    multipart:
#      enabled: false

解决办法二:(springboot2.0启动文件Application.java中排除MultipartAutoConfiguration.class)

@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
import axios from 'axios'
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.baseURL = 'http://localhost:7878/zkview';
Vue.prototype.$ajax = axios;
3、get请求
testGet: function () {
 this.$ajax({
                                    首先springboot的自动装配组件会支持mutilpartfile的文件的上传方式.他是通过将httpservletrequest转化为standeredmutilpartserverlet 然后获取getfiles .
有时候明明上传了文件却,getfiles获取不到,可能是实现了filter接口的类重写了request导致
StandardMultipartHttpServletRequest类的方法parseRequest处理的时候没办法得到文件内容
                                    文章目录一、情景描述二、问题解析三、问题解决1. 修改配置文件2. 解析request3. 用法
一、情景描述
前段时间QA提了个bug,说文件上传时,前端进度条走完了,但是还是得等一段时间才能上传完成。然后由于那时候我刚好事比较少,就让我来看了。
二、问题解析
从bug描述看来,应该是前端进度条只是前端上传文件到后端的时间(后端本地的临时文件),然后后面等的那段时间是后端上传文件到文件存储的时间。如果要解决这个问题,要么前端进度条改成整体流程的时间(治标不治本),要么后端就不存临时文件,由原本的接收整个文
    @Bean
    public MultipartResolver multipartResolver(){
        CommonsMultipartResolver multipartResolver=...
                                    1.setMaxUploadSize
用于配置上传的文件的最大大小,例如:当设置值为5M时,则上传的文件均不可以超过5M,
即使一次性上传10个文件,则10个文件的大小总和不允许超过5M;
2.setMaxUploadSizePerFile
用于配置上传的每个文件的最大大,例如:当设置值为5M时,如果一次性上传10个文件,则每个文件都不允许
超过5M,但是总大小可以接近50M;
3.setDefaultEncoding
用于配置默认编码,上传的文件本身是不考虑编码问题的,只要文件的内容(表示文件内容信息含义
                                        相信很多朋友再用springmvc时都遇见了一个问题,那就是自带的获取上传的东西太慢,而且不知道如何修改,其实不然,spring框架既然给我们开放了这个接口,就一定遵从了可扩展性的原则,经过查看org.springframework.web.multipart.commons.CommonsMultipartResolver的源代码我们发现(我们在spring中使用commons file...
                                    今天在做文件上传时出现了如下错误,是上传文件大小大于默认大小了网上搜的一些解决办法都是针对普通springMVC的,都是配置xml文件,如下:<bean id="multipartResolver"  
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
                                    以前遇到的坑,现在又用到了。为了避免大家入坑,所以有为大家发出来共享。
项目一用到了上传,在Spring配置文件中并没对multipartResolver进行配置,后台接口获取文件的方法为:
MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());Mu...
                                    源:https://blog.csdn.net/happy_cheng/article/details/54178392
1.现象是在spring-boot里加入commons-fileupload jar并且配置了mutilPart的bean,在upload的POST请求后,发现multipartRequest.getFiles=null,有点奇怪,查了文档资料才解决。 
2.原因是:sp...
                                    spring-boot上传文件MultiPartFile获取不到文件问题解决。现象是在spring-boot里加入commons-fileupload jar并且配置了mutilPart的bean,在upload的POST请求后,发现multipartRequest.getFiles("file")=null,有点奇怪,查了文档资料才解决