麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

Spring Cloud Feign文件傳輸的示例代碼

2024-07-14 08:41:08
字體:
來源:轉載
供稿:網友

一、配置文件解析器

服務提供者和消費者都需要配置文件解析器,這里使用 commons-fileupload 替換原有的解析器:

依賴:

<dependency>  <groupId>commons-fileupload</groupId>  <artifactId>commons-fileupload</artifactId>  <version>1.3.1</version></dependency>

注入 bean :

@Bean(name = "multipartResolver")public MultipartResolver mutipartResolver(){  CommonsMultipartResolver com = new CommonsMultipartResolver();  com.setDefaultEncoding("utf-8");  return com;}

程序入口中剔除原有的解析器:

@SpringBootApplication(exclude = {MultipartAutoConfiguration.class})

二、服務提供者,即接收文件一方的配置

Controller 的寫法:

@ResponseBody@RequestMapping(value = "/upload", method = {RequestMethod.POST},        produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},        consumes = MediaType.MULTIPART_FORM_DATA_VALUE)public Result<String> uploadFile(@RequestPart("file")MultipartFile file,@RequestParam("id")Long id){  String fileName = file.getOriginalFilename();  String extend = FileOperateUtil.suffix(fileName);  FileOperateUtil.copy("E://" + fileName, file);  return ResultBuilder.success("ok");}

@RequestPart 指定文件,后面的 @RequestParam 是額外參數,注意額外參數不能超過url長度限制。

三、服務消費者配置

依賴:

<dependency>  <groupId>io.github.openfeign.form</groupId>  <artifactId>feign-form-spring</artifactId>  <version>3.2.2</version></dependency><dependency>  <groupId>io.github.openfeign.form</groupId>  <artifactId>feign-form</artifactId>  <version>3.2.2</version></dependency>

文件編碼配置:

import feign.codec.Encoder;import feign.form.spring.SpringFormEncoder;import org.springframework.beans.factory.ObjectFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.web.HttpMessageConverters;import org.springframework.cloud.netflix.feign.support.SpringEncoder;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class MultipartSupportConfig{  @Autowired  private ObjectFactory<HttpMessageConverters> messageConverters;  @Bean  public Encoder feignFormEncoder(){    return new SpringFormEncoder(new SpringEncoder(messageConverters));  }}

Feign 接口定義:

@FeignClient(name = "test-upload")public interface UploadService{  @ResponseBody  @RequestMapping(value = "/upload", method = {RequestMethod.POST},      produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},      consumes = MediaType.MULTIPART_FORM_DATA_VALUE)  Result<String>uploadFile(@RequestPart("file")MultipartFile file,@RequestParam("id")Long id);}

與普通 Feign 接口寫法差不多,注意方法注解和參數與服務提供者的 controller 一樣。

Controller 的寫法, Controller 中接收前端傳過來的文件信息和額外參數,然后通過 Feign 接口傳輸到遠端:

// 注入 feign 接口@Autowiredprivate UploadService uploadService;@RequestMapping(value = "/upload", method = RequestMethod.POST, produces = "application/json; charset=utf-8")@ResponseBodypublic Result<String> testUpload(HttpServletRequest request, Long id){  Result<String> result = null;  MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;  Map<String, MultipartFile> fileMap = mRequest.getFileMap();  for (MultipartFile mFile : fileMap.values()) {    String fileName = mFile.getOriginalFilename();    result = uploadService.uploadFile(mFile, id);  }  return result;}

四、總結

最后梳理一下流程,服務消費者接收前端(如瀏覽器)傳過來的文件,但是并不進行業務處理,然后通過 Feign 調用接口,把文件傳給服務提供者,服務提供者拿到文件后,進行相應的業務處理。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: h色视频在线观看 | 毛片视| 毛片在线免费观看视频 | 亚洲日本欧美 | 亚洲成人在线免费观看 | 99国语露脸久久精品国产ktv | 一区二区三区四区高清视频 | 亚洲免费高清 | av在线观 | arabxxxxvideos | 蜜桃传媒视频麻豆第一区免费观看 | 亚洲成人免费影视 | 成人aaaa免费全部观看 | 午夜精品一区二区三区免费 | 免费在线观看国产精品 | 成人三级黄色片 | 久久青草影院 | 免费a级观看 | 1314av | 国产一区二区三区高清 | 日韩精品中文字幕一区 | 国产免费一区二区三区视频 | 欧美在线小视频 | 久久网站热最新地址 | 亚洲国产超高清a毛毛片 | 黄色片网站在线看 | 色视频一区二区 | 日韩激情在线视频 | 中文字幕在线观看精品 | 欧美日韩在线视频观看 | 亚洲午夜一区二区三区 | 毛片视频网站 | 国产喷白浆10p | www久 | 黑人一区二区三区四区五区 | 欧美精品激情视频 | japanese hot milf free av | 久久精品一区二区三区不卡牛牛 | 黄色作爱视频 | 99亚洲视频 | 蜜桃传媒视频麻豆第一区免费观看 |