-
springBoot上传文件一直为空的修复
-
现象
使用 ServletFileUpload getItemIterator获取fileItemIterator fileItemIterator.hasNext()一直为false
-
解决方式,在项目中通过添加配置 spring.http.multipart.enabled=false 解决
刚开始一直以为是postman或者请求头有问题,使用网页版和客户端postman多次尝试,打debug调试还是空,后来跟了下源码,主要是当我们请求头设置multipart/form-data时,springBoot接收到request对象后,会自动做一次转换,将httpRequest转化成MultipartRequest,没有配置spring.http.multipart.enabled=false 的情况下,getItemIterator()方法执行时,findNextItem()方法会将eof置为true,从而执行fileItemIterator.hasNext()方法时会返回false,导致获取文件为null,从而造成NEP错误,加上配置之后,可以解决这个问题 - 未配置 spring.http.multipart.enabled=false 的request
- 配置 spring.http.multipart.enabled=false 之后的request