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

解決feign微服務(wù)間的文件上傳報(bào)錯問題

 更新時(shí)間:2021年06月30日 11:48:40   作者:Bee.F  
這篇文章主要介紹了解決feign微服務(wù)間的文件上傳報(bào)錯問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

A微服務(wù)調(diào)用B服務(wù)的上傳文件接口報(bào)錯:

the request was rejected because no multipart boundary was found

spring cloud版本 H

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Hoxton.SR8</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>

如果你是使用feign相信你已經(jīng)引入openfeign的依賴了;

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

服務(wù)提供者接口:

//服務(wù)提供者上傳文件接口
@PostMapping(value = " /file/upload")
public ResultModel<FileInfo> fileUpload(@RequestParam("access_token") String accessToken, @RequestParam("file") MultipartFile file) {
    //返回保存文件信息的實(shí)體類
    FileInfo fileInfo = fileInfoService.uploadFile(file);
    return ResultModel.ok(fileInfo);
}

消費(fèi)者接口:

@Component
@FeignClient(value = "file-server")
public interface FileInfoFeignService {
    @PostMapping(value = "/file/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResultModel<FileInfo> fileUpload(@RequestParam("access_token") String accessToken, @RequestPart("file") MultipartFile file);
}

必須加

consumes = MediaType.MULTIPART_FORM_DATA_VALUE

MultipartFile file 前面的注解必須是@RequestPart

消費(fèi)者controller類:

//消費(fèi)者上傳文件接口
@PostMapping(value = "/fileUpload")
public ResultModel<FileInfo> fileUpload(@RequestParam("access_token") String accessToken, @RequestPart("file") MultipartFile file) {
    return fileInfoFeignService.fileUpload(accessToken, file);
}

這樣就完成了!

自己調(diào)試了很多遍,感覺其他的博客寫的亂七八糟的。

feign上傳文件踩坑及解決

通過 feign 調(diào)用文件服務(wù)提供者接口時(shí),需傳輸 文件file ,服務(wù)調(diào)用者有時(shí)會報(bào)錯誤:

feign.FeignException$BadRequest: status 400 reading

在這里插入圖片描述

服務(wù)提供者會報(bào) Required request part 'file' is not present 錯誤。

這是因?yàn)?strong>服務(wù)調(diào)用者M(jìn)ultipartFile的value跟服務(wù)提供者@RequestPart中的value值不一樣導(dǎo)致的。

在服務(wù)調(diào)用者M(jìn)ultipartFile的value要跟服務(wù)提供者的@RequestPart中的value值一樣。不然它會拋出400異常?。?!

示例

服務(wù)調(diào)用者

@PostMapping("/xxx/file")
public xx uploadOrderFilesToOSS(@ApiParam("附件") @RequestParam("file") MultipartFile[] file) {
   return xxxService.uploadOrderFilesToOSS(file);
}

Feign

@PostMapping(value = "/file", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
xxx uploadSigleFile(@RequestParam("path") String path, @RequestPart("file") MultipartFile file);

服務(wù)提供者

@PostMapping(value = "/file", produces = {MediaType.APPLICATION_JSON_UTF8_VALUE}, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public xxx uploadSigleFile(@RequestParam("path") String path, @RequestPart("file") MultipartFile file) {
  return fileService.uploadFileToOSS(path, file);
}

可以通過以下代碼查看請求參數(shù)

Collection<Part> parts = request.getParts();
logger.info(JSONObject.toJSONString(parts, true));

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

相關(guān)文章

  • hibernate 命名查詢?nèi)绾螌?shí)現(xiàn)

    hibernate 命名查詢?nèi)绾螌?shí)現(xiàn)

    Hibernate允許在映射文件中定義字符串形式的查詢語句,這種查詢方式成為命名查詢,需要的朋友可以參考下
    2012-11-11
  • java 加密之RSA算法加密與解密的實(shí)例詳解

    java 加密之RSA算法加密與解密的實(shí)例詳解

    這篇文章主要介紹了java 加密之RSA算法加解密與解密的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Java 超詳細(xì)講解異常的處理

    Java 超詳細(xì)講解異常的處理

    異常就是不正常,比如當(dāng)我們身體出現(xiàn)了異常我們會根據(jù)身體情況選擇喝開水、吃藥、看病、等 異常處理方法。 java異常處理機(jī)制是我們java語言使用異常處理機(jī)制為程序提供了錯誤處理的能力,程序出現(xiàn)的錯誤,程序可以安全的退出,以保證程序正常的運(yùn)行等
    2022-04-04
  • java模擬多線程http請求代碼分享

    java模擬多線程http請求代碼分享

    本篇文章給大家分享了java模擬多線程http請求的相關(guān)實(shí)例代碼,對此有需要的可以跟著測試下。
    2018-05-05
  • SpringBoot自動裝配的原理與使用

    SpringBoot自動裝配的原理與使用

    在現(xiàn)代的軟件開發(fā)中,依賴管理是一個關(guān)鍵的任務(wù),隨著應(yīng)用程序規(guī)模的增長,手動管理對象之間的依賴關(guān)系變得越來越復(fù)雜,為了解決這個問題,Spring Boot提供了一種強(qiáng)大的功能,即自動裝配,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • Spring AOP的幾種實(shí)現(xiàn)方式總結(jié)

    Spring AOP的幾種實(shí)現(xiàn)方式總結(jié)

    本篇文章主要介紹了Spring AOP的幾種實(shí)現(xiàn)方式總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • JAVA環(huán)境搭建之MyEclipse10+jdk1.8+tomcat8環(huán)境搭建詳解

    JAVA環(huán)境搭建之MyEclipse10+jdk1.8+tomcat8環(huán)境搭建詳解

    本文詳細(xì)講解了MyEclipse10+jdk1.8+tomcat8的JAVA環(huán)境搭建方法,希望能幫助到大家
    2018-10-10
  • SpringBoot整合MybatisPlusGernerator實(shí)現(xiàn)逆向工程

    SpringBoot整合MybatisPlusGernerator實(shí)現(xiàn)逆向工程

    在我們寫項(xiàng)目的時(shí)候,我們時(shí)常會因?yàn)樾枰獎?chuàng)建很多的項(xiàng)目結(jié)構(gòu)而頭疼,本文主要介紹了SpringBoot整合MybatisPlusGernerator實(shí)現(xiàn)逆向工程,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • Java設(shè)計(jì)模式之java迭代器模式詳解

    Java設(shè)計(jì)模式之java迭代器模式詳解

    這篇文章主要介紹了java迭代器模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • 淺談Maven的build生命周期和常用plugin

    淺談Maven的build生命周期和常用plugin

    Maven和gradle應(yīng)該是現(xiàn)代java程序員中使用的最多的兩種構(gòu)建工具。在它們出現(xiàn)之前,則是ant的天下。本文將介紹Maven的build生命周期和常用plugin。
    2021-06-06

最新評論

新安县| 嘉禾县| 绥棱县| 唐河县| 宣威市| 珠海市| 弋阳县| 茌平县| 宁安市| 女性| 军事| 宜兰市| 深水埗区| 辽阳市| 英吉沙县| 乐都县| 克拉玛依市| 左云县| 乌拉特中旗| 勐海县| 蒙山县| 临泉县| 泸西县| 平果县| 山西省| 和顺县| 湾仔区| 景洪市| 昔阳县| 肥西县| 河池市| 呼图壁县| 万安县| 连山| 彭州市| 白城市| 顺昌县| 雷州市| 广汉市| 裕民县| 明光市|