欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Feign實(shí)現(xiàn)跨服務(wù)文件上傳下載

 更新時(shí)間:2019年04月26日 10:03:35   作者:浪里xiao白龍  
這篇文章主要為大家詳細(xì)介紹了Feign實(shí)現(xiàn)跨服務(wù)文件上傳下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Feign實(shí)現(xiàn)跨服務(wù)的文件上傳下載操作,供大家參考,具體內(nèi)容如下

1、跨服務(wù)文件上傳,目前feign不支持調(diào)用文件上傳接口,需要自行配置來(lái)滿(mǎn)足feign的調(diào)用方式

①.首先需要在pom文件里添加feign依賴(lài)

<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>

②.上傳的接口

@FeignClient(value = "fdn-storage", configuration = {FileFeignConfig.class})
public interface FileClient {

 String PREFIX_PATH = "/oss/files";
 /**
  * 上傳存儲(chǔ)文件
  * @param file
  * @return
  * @throws IOException
  */
 @PostMapping(value = PREFIX_PATH + "/", consumes = MULTIPART_FORM_DATA_VALUE)
 FeignResult<FileEntity> save(@RequestPart(value = "file") MultipartFile file) throws IOException;
 }

③.添加配置來(lái)滿(mǎn)足feign的調(diào)用

@Configuration
public class FileFeignConfig {
 @Autowired
 private ObjectFactory<HttpMessageConverters> messageConverters;

 @Bean
 @Primary
 @Scope("prototype")
 public Encoder feignEncoder() {
  return new SpringFormEncoder(new SpringEncoder(messageConverters));
 }

 @Bean
 public feign.Logger.Level multipartLoggerLevel() {
  return feign.Logger.Level.FULL;
 }
}

④.外部服務(wù)的controller層調(diào)用

public class TestController extends BaseRestController {
 @Autowired
 FileClient client;
 /**
  * 上傳文件
  **/
 @PostMapping(value = "/" , consumes = MULTIPART_FORM_DATA_VALUE)
 public FileEntity save(@RequestPart(value = "file") MultipartFile file) throws IOException {
  FileEntity fileEntity = client.save(file).getData();
  return fileEntity;
 }
} 

到此位置就可以上傳成功了

2、跨服務(wù)的文件下載

①.下載的接口(也是寫(xiě)在public interface FileClient),是用feign.Response來(lái)作為返回值的

/**
  * 下載文件
  * @param id
  * @return
  * @throws IOException
  */
 @GetMapping(value = PREFIX_PATH + "/{id}/data")
 Response download(@PathVariable("id") String id) throws IOException;

②.外部服務(wù)的controller層調(diào)用

 /**
  *由id下載存儲(chǔ)的文件
  */
 @GetMapping(value = "/{id}/data")
 public void downloadFile(@PathVariable String id, HttpServletResponse servletResponse) throws IOException {
  Response response = client.download(id);
  Response.Body body = response.body();
  for(Object key : response.headers().keySet()){
   List<String> kList = (List)response.headers().get(key);
   for(String val : kList){
    servletResponse.setHeader(StringUtils.toString(key), val);
   }
  }
  try(InputStream inputStream = body.asInputStream();
   OutputStream outputStream = servletResponse.getOutputStream()
  ){
   byte[] b = new byte[inputStream.available()];
   inputStream.read(b);
   outputStream.write(b);
   outputStream.flush();
  }catch (IOException e){
   throw new RestException("IO流異常", e);
  }
 }

至此,下載文件完成。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java反射機(jī)制概念、原理與用法總結(jié)

    Java反射機(jī)制概念、原理與用法總結(jié)

    這篇文章主要介紹了Java反射機(jī)制概念、原理與用法,較為詳細(xì)的分析了java反射機(jī)制的概念、原理,并結(jié)合實(shí)例形式總結(jié)分析了java反射機(jī)制的具體使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-11-11
  • Spring注解驅(qū)動(dòng)開(kāi)發(fā)實(shí)現(xiàn)屬性賦值

    Spring注解驅(qū)動(dòng)開(kāi)發(fā)實(shí)現(xiàn)屬性賦值

    這篇文章主要介紹了Spring注解驅(qū)動(dòng)開(kāi)發(fā)實(shí)現(xiàn)屬性賦值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • spring boot配置ssl(多cer格式)超詳細(xì)教程

    spring boot配置ssl(多cer格式)超詳細(xì)教程

    這篇文章主要介紹了spring boot配置ssl(多cer格式)超詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • Spring Boot拓展XML格式的請(qǐng)求和響應(yīng)操作過(guò)程

    Spring Boot拓展XML格式的請(qǐng)求和響應(yīng)操作過(guò)程

    在我們開(kāi)發(fā)過(guò)程中,我們經(jīng)常使用的參數(shù)絕大多少事HTML和JSON格式的請(qǐng)求和響應(yīng)處理,但是我們?cè)趯?shí)際開(kāi)發(fā)過(guò)程中,我們可能經(jīng)歷一些,比如對(duì)于XML格式的請(qǐng)求,本文給大家介紹Spring Boot拓展XML格式的請(qǐng)求和響應(yīng),感興趣的朋友一起看看吧
    2023-10-10
  • Springboot筆記之熱部署及不生效的解決方案

    Springboot筆記之熱部署及不生效的解決方案

    這篇文章主要介紹了Springboot筆記之熱部署及不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • java8中新的Date和Time詳解

    java8中新的Date和Time詳解

    這篇文章主要是java8中新的Date和Time,探討新Date類(lèi)和Time類(lèi)背后的設(shè)計(jì)原則,有所需要的小伙伴希望能幫助到你
    2016-07-07
  • 基于Apache組件分析對(duì)象池原理的實(shí)現(xiàn)案例分析

    基于Apache組件分析對(duì)象池原理的實(shí)現(xiàn)案例分析

    本文從對(duì)象池的一個(gè)簡(jiǎn)單案例切入,主要分析common-pool2組件關(guān)于:池、工廠、配置、對(duì)象管理幾個(gè)角色的源碼邏輯,并且參考其在Redis中的實(shí)踐,對(duì)Apache組件分析對(duì)象池原理相關(guān)知識(shí)感興趣的朋友一起看看吧
    2022-04-04
  • springboot 中文件上傳下載實(shí)例代碼

    springboot 中文件上傳下載實(shí)例代碼

    Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。這篇文章主要介紹了springboot 中文件上傳下載實(shí)例代碼,需要的朋友可以參考下
    2017-11-11
  • SpringMVC+Mysql實(shí)例詳解(附demo)

    SpringMVC+Mysql實(shí)例詳解(附demo)

    本篇文章主要介紹了SpringMVC+Mysql實(shí)例詳解(附demo),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。
    2016-12-12
  • Java字符串寫(xiě)入文件三種方式的實(shí)現(xiàn)

    Java字符串寫(xiě)入文件三種方式的實(shí)現(xiàn)

    這篇文章主要介紹了 Java字符串寫(xiě)入文件三種方式的實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06

最新評(píng)論