问题描述
之前在服务端(接收方),接收的MultipartFile数据总是为null,然后忘记改了哪,变成了下面报错。找了好久,未解决,求助啊啊啊啊
报错 org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
2020-10-12 20:58:33.714 ERROR 15852 --- [nio-8882-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found] with root cause
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
at org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.init(FileItemIteratorImpl.java:174) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.getMultiPartStream(FileItemIteratorImpl.java:190) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.findNextItem(FileItemIteratorImpl.java:209) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.http.fileupload.impl.FileItemIteratorImpl.<init>(FileItemIteratorImpl.java:127) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.http.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:256) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:280) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
at org.apache.catalina.connector.Request.parseParts(Request.java:2869) ~[tomcat-embed-core-9.0.38.jar:9.0.38]
依赖
试过将版本3.0.3换成3.8.0,干脆在调用的时候400,调用失败。。。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form</artifactId>
<version>3.0.3</version>
</dependency>
<dependency>
<groupId>io.github.openfeign.form</groupId>
<artifactId>feign-form-spring</artifactId>
<version>3.0.3</version>
</dependency>
配置文件加了文件大小控制
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB
FeignClient
@FeignClient(value = "ossservice", configuration = MultipartSupportConfig.class)
public interface OSSServiceFegin {
@RequestMapping(value = "/osservice/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
R upload(@RequestPart MultipartFile file);
}
class MultipartSupportConfig {
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
@Bean
@Primary
@Scope("prototype")
public Encoder feignFormEncoder() {
return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
@Bean
public feign.Logger.Level multipartLoggerLevel() {
return feign.Logger.Level.FULL;
}
}
服务端(接收方)
@RestController
@RequestMapping("/osservice")
public class OssController {
@Autowired
private OssService seOss;
@PostMapping(value = "/upload",produces = MediaType.APPLICATION_JSON_UTF8_VALUE, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
R upload(@RequestPart("file") MultipartFile file) {
String path = seOss.upload(file);
return R.ok().data("path", path);
}
}