feign 之间调用上传文件接口报错 Current request is not a multipart request...

2022-08-03 08:16:40

在使用 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,因为文件上传需要该类型

  • 作者:船长9527
  • 原文链接:https://blog.csdn.net/qq_42802188/article/details/119595912
    更新时间:2022-08-03 08:16:40