本文主要是介绍@FeignClient 中实现上传文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载自:Spring Cloud Feign的文件上传实现 和 Spring Cloud中FeignClient添加上传文件功能
有两种方案可以实现:
- feign-form-spring库来做
- feign.Feign来实现
方案一:
服务消费者
<dependency><groupId>io.github.openfeign.form</groupId><artifactId>feign-form-spring</artifactId><version>3.0.3</version>
</dependency>
@RestController
@RequestMapping("checkobject")
public class CheckObjectController {@Autowiredprivate ControlFeign controlFeign;/** 上传文件 */@PostMapping("importTestData")public OpenResponse<Object> importTestData(@RequestPart("file")MultipartFile file) throws IOException {if (file.isEmpty()) {return new OpenResponse<Object>(OpenResponseCode.FAILED, "空文件");}ObjectRestResponse objectRestResponse = controlFeign.importTestData(file);return objectRestResponse.isRel() ? new OpenResponse<>(OpenResponseCode.SUCCESS) : new OpenResponse<>(OpenResponseCode.FAILED, null, "调用报表世界解决出错");}
}@FeignClient(value = "ms-business-control-server", configuration = ControlFeign.MultipartSupportConfig.class)
public interface ControlFeign {/** 上传文件 */@PostMapping(value="/SoftCheckController/importTestData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)ObjectRestResponse importTestData(@RequestPart(value = "file")MultipartFile file);@Configurationclass MultipartSupportConfig {@Autowiredprivate ObjectFactory<HttpMessageConverters> messageConverters;@Beanpublic Encoder feignFormEncoder() {return new SpringFormEncoder(new SpringEncoder(messageConverters));}}
}
服务提供者
@RequestMapping(value = "/SoftCheckController")
@RestController
public class SoftCheckController {/** 上传文件 */@PostMapping(value="/importTestData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)public ObjectRestResponse importTestData(@RequestPart(value = "file") MultipartFile file) {return softCheckService.importTestData(file);}
}
这篇关于@FeignClient 中实现上传文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!