问题
在SpringBoot的环境下,写上传文件的功能,结果没有获取到文件的问题,跟踪代码后,发现getItemIterator(request)为空。比较典型的表现是使用ueditor时,提示未找到上传数据。
原因
spring-boot自带的org.springframework.web.multipart.MultipartFile和Multipart产生冲突,如果同时使用了MultipartResolver 和ServletFileUpload,就会在iter.hasNext()返回false。
整个问题产生的原因是Spring框架先调用了MultipartResolver 来处理http multi-part的请求。这里http multipart的请求已经消耗掉。后面又交给ServletFileUpload ,那么ServletFileUpload 就获取不到相应的multi-part请求。
因此将multipartResolve配置去除,问题就解决了。
解决
在使用ServletFileUpload时需要关闭Spring Boot的默认配置 ,所以在配置文件中添加
spring:
servlet:
multipart:
enabled: false
网友评论