在使用feign调用上传文件接口时候需要注意请求头设置
(1)在消费端的控制器进行调用feign时的操作
@PostMapping(value="/uploadAppeal",consumes = MediaType.MULTIPART_FORM_DATA_VALUE,produces = MediaType.APPLICATION_PROBLEM_JSON_VALUE)
public R<?> uploadFile(@RequestPart MultipartFile file){
return remoteFileService.sftpUpload(file);
}
@RequestPart注解的含义:
1.@RequestPart这个注解用在multipart/form-data表单提交请求的方法上。
2.支持的请求方法的方式MultipartFile,属于Spring的MultipartResolver类。这个请求是通过http协议传输的。
(2)在生产端的控制器上的操作
@PostMapping("/sftp/upload")
@ApiOperation(value = "上传文件", notes = "上传文件")
public R sftpUpload(@RequestParam("file") MultipartFile file) {
return R.ok(sysFileService.sftpUploadFile(file));
}
该处和平常一样,无需处理
(3)在feign上的操作
@PostMapping(value = "/sys-file/sftp/upload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE,produces = MediaType.APPLICATION_PROBLEM_JSON_VALUE)
R sftpUpload(@RequestPart("file") MultipartFile file);
不管是在生产端的feign也好还是在消费端的控制器上也好,一定需要注意consumes和produces的配置。
该处配置了org.springframework.http.MediaType下的常量值,该值的内容是multipart/form-data。
在该处设置了以后,Content-Type则是multipart/form-data,因为文件上传需要该类型