feign跨服务上传文件,网上现在的方法全都试过了。报Required request part 'file' is not present。
题主把相关代码贴一下,大家帮你看看
网上的方案都试了,而且你啥代码异常也不贴出来,所以没办法解决。如果文件不大的话,转 base64 吧,传字符串吧。
检查org.springframework.web.multipart.MultipartFile#getName,传入和接收的name是否一致
文件使用MultipartFile ,加注解@RequestPart ,使用post,亲测有效
@FeignClient(value = FeignConstant.PLATFORM_CLOUD_UPMS,configuration = FeignConfiguration.class)
public interface IUploadFileProvider {
@PostMapping(value = "/uploadTest")
Result uploadTest(@RequestPart("file")MultipartFile file);
}
@Configuration
public class FeignConfiguration {
@Bean
@Primary
@Scope("prototype")
public Encoder multipartFormEncoder(ObjectFactory<HttpMessageConverters> messageConverters) {
return new FeignSpringFormEncoder(new SpringEncoder(messageConverters));
}
}
//服务端实现类
@RestController
@Api(value = "文件上传", tags = "文件上传")
public class UploadFileApi {
@PostMapping("/uploadTest")
public Result uploadTest(@RequestPart("file") MultipartFile file) {
System.out.println(file.getContentType());
return Result.ok();
}
}
//客户端调用
public class UploadFileApi {
@Resource
private IUploadFileProvider uploadFileProvider;
@PostMapping(value = "/uploadFile")
public Result uploadTest(@RequestPart("file")MultipartFile file) {
return uploadFileProvider.uploadTest(file);
}
}