报错
There was an unexpected error (type=Internal Server Error, status=500).
Type definition error: [simple type, class java.io.FileDescriptor]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class java.io.FileDescriptor and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: java.util.Collections$SingletonMap["file"]->org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile["inputStream"]->java.io.FileInputStream["fd"])
服务端的代码
@Autowired
private ossFileService oss;
@RequestMapping("/upimagefile")
public void upimagefile(@RequestPart MultipartFile file) {
String upfile = oss.upfile(file);
if(StringUtils.equals(upfile,"error")){
System.out.println("上传图片失败");
}
else {
System.out.println("成功上传图片");
}
}
客户端的代码
@FeignClient(value = "ALIYUNFILE",configuration=aliyunFileFeign.Myconfig.class )
public interface aliyunFileFeign {
@Headers("Content-Type:multipart/form-data")
@RequestMapping(value = "/upimagefile", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE})
public void upimagefile(@RequestPart MultipartFile file);
@Configuration
public class Myconfig{
@Autowired
private ObjectFactory<HttpMessageConverters> messageConverters;
@Scope("prototype")
@Primary
@Bean
public Encoder feignFormecoder(){
return new SpringFormEncoder(new SpringEncoder(messageConverters));
}
@Bean
public feign.Logger.Level multipartLoggerLevel(){
return Logger.Level.FULL;
}
}
}
springboot为2.1.9
这是jackson的依赖版本
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.10</version>
</dependency>
在@RequestMapping注解中添加 consumes = MediaType.MULTIPART_FORM_DATA_VALUE配置项即可解决
如:
@RequestMapping(value = "/uploadFile",method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)