最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springcloud如何使用Feign后臺內(nèi)部傳遞MultipartFile

 更新時間:2022年03月04日 11:52:51   作者:linli1991  
這篇文章主要介紹了springcloud如何使用Feign后臺內(nèi)部傳遞MultipartFile,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

如何使用Feign后臺內(nèi)部傳遞MultipartFile

先修改Feign Client接口

 
import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.context.annotation.Bean;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.multipart.MultipartFile;
 
/**
 * @author linli
 * @date 20-06-27
 */
@FeignClient(value = "upload", fallbackFactory = UploadFallbackFactory.class, configuration = UploadClient.MultipartSupportConfig.class)
public interface UploadClient {
 
    @PostMapping(path = "/upload-text", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    String uploadText(@RequestPart(name = "file") MultipartFile file);
 
    /**
     * 引用配置類MultipartSupportConfig.并且實例化
     */
    class MultipartSupportConfig {
        @Bean
        public Encoder feignFormEncoder() {
            return new SpringFormEncoder();
        }
    }
}

若SpringFormEncoder 引入報錯,加上下面的依賴

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

內(nèi)部調(diào)用

private String uploadFile(String str) {
        FileOutputStream fos = null;
        FileInputStream fis = null;
        MultipartFile multipartFile = null;
        byte[] bt = str.getBytes();
        File file = null;
        try {
            file = File.createTempFile("file" + UUID.randomUUID(), ".txt");
            fos = new FileOutputStream(file);
            fos.write(bt, 0, bt.length);
            fis = new FileInputStream(file);
            multipartFile = new MockMultipartFile("file", file.getName(),
                    MediaType.TEXT_PLAIN_VALUE, fis);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return uploadClient.uploadText(multipartFile);
    }

注意點

Feign進行跨服務傳遞MultipartFile文件

通過調(diào)用服務進行文件上傳,避免每個需要上傳文件的模塊都寫一遍上傳服務,造成代碼冗余。

本文主要包含通過feign進行文件上傳模塊。

使技術人員在開發(fā)過程中遇到問題時有地可查,有章可循。

通過feign進行跨服務傳遞MultipartFile文件

添加依賴

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

添加配置文件

package com.ruiyi.twowayreferral.configurer;
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.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.support.SpringEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MultipartSupportConfig {
? ?@Autowired
? ?private ObjectFactory<HttpMessageConverters> messageConverters;
? ?@Bean
? ?public Encoder feignFormEncoder() {
? ? ? ?return new SpringFormEncoder(new SpringEncoder(messageConverters));
? ?}
}

代碼示例

@FeignClient(value = "controller-center")
public interface CallFrignService {
? ? /**
? ? ?* @Create 文件上傳 wanggx_ruiyi 2019.11.15
? ? ?* @param uploadPath 文件上傳地址
? ? ?* @param file 上傳的文件
? ? ?* @return
? ? ?*/
? ?@PostMapping(value = "/api/v1/common/file/fileUpload",consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
? ?String fileUpload(@RequestParam(value = "uploadPath", required = true) String uploadPath,@RequestPart(value = "file", required = true) MultipartFile file);
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 在SpringBoot中使用UniHttp簡化天地圖路徑規(guī)劃調(diào)用實踐記錄(場景分析)

    在SpringBoot中使用UniHttp簡化天地圖路徑規(guī)劃調(diào)用實踐記錄(場景分析)

    本文介紹了如何在SpringBoot項目中使用UniHttp簡化天地圖路徑規(guī)劃接口的調(diào)用,通過一個具體的例子展示了如何根據(jù)中文地址獲取經(jīng)緯度坐標,并使用UniHttp調(diào)用天地圖路徑規(guī)劃服務,感興趣的朋友一起看看吧
    2025-02-02
  • 詳解Java后端優(yōu)雅驗證參數(shù)合法性

    詳解Java后端優(yōu)雅驗證參數(shù)合法性

    這篇文章主要介紹了詳解Java后端優(yōu)雅驗證參數(shù)合法性,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • java圖片驗證碼實現(xiàn)示例分享

    java圖片驗證碼實現(xiàn)示例分享

    這篇文章主要介紹了java實現(xiàn)圖片驗證碼示例,需要的朋友可以參考下
    2014-02-02
  • SpringBoot整合EasyExcel實現(xiàn)大規(guī)模數(shù)據(jù)的并行導出與壓縮下載

    SpringBoot整合EasyExcel實現(xiàn)大規(guī)模數(shù)據(jù)的并行導出與壓縮下載

    在 Spring Boot 應用中,整合 EasyExcel 實現(xiàn)并行導出數(shù)據(jù)并進行 Zip 壓縮下載可以極大地提高數(shù)據(jù)處理效率和用戶體驗,文中通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2024-10-10
  • Spring Eureka 未授權訪問漏洞修復問題小結

    Spring Eureka 未授權訪問漏洞修復問題小結

    項目組使用的 Spring Boot 比較老,是 1.5.4.RELEASE ,最近被檢測出 Spring Eureka 未授權訪問漏洞,這篇文章主要介紹了Spring Eureka 未授權訪問漏洞修復問題小結,需要的朋友可以參考下
    2024-04-04
  • Java動態(tài)循環(huán)隊列是如何實現(xiàn)的

    Java動態(tài)循環(huán)隊列是如何實現(xiàn)的

    今天帶大家學習java隊列的相關知識,文章圍繞著如何實現(xiàn)Java動態(tài)循環(huán)隊列展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    這篇文章主要介紹了window?下?win10?jdk8安裝與環(huán)境變量的配置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Java線程池實現(xiàn)帶返回值的方式方法

    Java線程池實現(xiàn)帶返回值的方式方法

    在Java中,線程池是一種重要的多線程處理方式,可以有效管理和重用線程,提高程序的性能和效率,有時候我們需要在多線程處理中獲取線程的返回值,本文將介紹如何使用線程池實現(xiàn)帶返回值的方式方法,需要的朋友可以參考下
    2024-09-09
  • Java 中Map 的用法詳解

    Java 中Map 的用法詳解

    本文主要介紹java 中的Map 接口, 這里對Map 接口下的幾個類做了詳細介紹,希望對學習java 編程的小伙伴有所幫助
    2016-07-07
  • 詳解Spring中的AOP及AspectJ五大通知注解

    詳解Spring中的AOP及AspectJ五大通知注解

    這篇文章主要介紹了詳解Spring中的AOP及AspectJ五大通知注解,AOP面向切面編程是一種新的方法論,是對傳統(tǒng)OOP面向?qū)ο缶幊痰难a充,AOP?的主要編程對象是切面(aspect),切面模塊化橫切關注點,需要的朋友可以參考下
    2023-08-08

最新評論

漳平市| 手游| 兴国县| 黑水县| 南和县| 镇江市| 蒙山县| 五台县| 新野县| 兴海县| 衡东县| 若尔盖县| 娱乐| 内丘县| 合阳县| 望江县| 东辽县| 宁河县| 府谷县| 巨鹿县| 达日县| 韶山市| 浦东新区| 农安县| 沙田区| 灵丘县| 疏附县| 台北县| 三门峡市| 罗江县| 汤原县| 甘谷县| 西安市| 庆云县| 乐平市| 丰台区| 九江县| 泸西县| 定襄县| 衡东县| 和政县|