今天在写上头像功能的时遇到一个问题,一开始看到是超时。搜了一下百度,以为是文件太大导致超时,但是我看了一下我的Appliaction.yml知道不是大小的问题。然后我看被调用的微服务,报错:Current request is not a multipart request。
一般参数的写法是:
@RequestMapping(value="IconUpload")
public String IconUpload(@RequestParam("file") MultipartFile[] file)
在网上搜很多是这样写的,在不调用微服务的时候这样写是可以的。但是现在通过OpenFeign调用其他的微服务,原因是在openfeign中,发送 multipartfile文件,应该使用@RequestPart而不是@RequestParam。所以是注解写错了
正确写法:
@RequestMapping(value="IconUpload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String IconUpload(@RequestPart("file") MultipartFile[] file)
consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。
3.@RequestParam也同样支持multipart/form-data请求。
4.他们最大的不同是,当请求方法的请求参数类型不再是String类型的时候。
5.@RequestParam适用于name-valueString类型的请求域,@RequestPart适用于复杂的请求域(像JSON,XML)。
参考:Feign传输Multipartfile文件的正确方式,Current request is not a multipart request报错解决_hehe的博客-CSDN博客
https://segmentfault.com/a/1190000019732437?utm_source=tag-newest