欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

SpringCloud中怎么使用Feign上傳文件

Spring Cloud中怎么使用 Feign上傳文件,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

專注于為中小企業(yè)提供成都網(wǎng)站建設、成都做網(wǎng)站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)惠民免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000+企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

加依賴

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


編寫Feign Client

@FeignClient(name = "ms-content-sample", configuration = UploadFeignClient.MultipartSupportConfig.class)
public interface UploadFeignClient {
 @RequestMapping(value = "/upload", method = RequestMethod.POST,
   produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},
   consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
 @ResponseBody
 String handleFileUpload(@RequestPart(value = "file") MultipartFile file);
 class MultipartSupportConfig {
  @Bean
  public Encoder feignFormEncoder() {
   return new SpringFormEncoder();
  }
 }
}

如代碼所示,在這個Feign Client中,我們引用了配置類MultipartSupportConfig ,在MultipartSupportConfig 中,我們實例化了SpringFormEncoder 。這樣這個Feign Client就能夠上傳啦。

注意點

@RequestMapping(value = "/upload", method = RequestMethod.POST,
   produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},
   consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
中的produeces 、consumes 不能少;

接口定義中的注解@RequestPart(value = "file") 不能寫成@RequestParam(value = "file" 。

最好將Hystrix的超時時間設長一點,例如5秒,否則可能文件還沒上傳完,Hystrix就超時了,從而導致客戶端側的報錯。

SpringCloud中使用Feign的坑

示例如下:

@FeignClient("service-resource")
//@RequestMapping("/api/test")
public interface TestResourceItg {

 @RequestMapping(value = "/api/test/raw", method = RequestMethod.POST, consumes = "application/x-www-form-urlencoded")
 public String raw1(@PathVariable("subject") String subject, // 標題
     @RequestParam("content") String content); // 內(nèi)容

}

說明:

*使用RequestMapping中的consumes指定生成的請求的Content-Type
*RequestParam指定的參數(shù)會拼接在URL之后,如: ?name=xxx&age=18
*PathVariable指定的參數(shù)會放到一個LinkedHashMap<String, ?>傳入到feign的Encoder中進行處理,而在Spring中實現(xiàn)了該接口的Encoder為SpringEncoder,而該實現(xiàn)又會使用Spring中的HttpMessageConverter進行請求體的寫入。

坑:

*不要在接口類名上使用RequestMapping,雖然可以使用,但同時SpringMVC會把該接口的實例當作Controller開放出去,這個可以在啟動的Mapping日志中查看到
*使用默認的SpringEncoder,在不指定consumes時,PathVariable中的參數(shù)會生成JSON字符串發(fā)送,且默認情況下不支持Form表單的生成方式,原因為:FormHttpMessageConverter只能處理MultiValueMap,而使用PathVariable參數(shù)被放在了HashMap中。默認更不支持文件上傳。其實已經(jīng)有支持處理各種情況的HttpMessageConverter存在。

填坑:

*支持Form表單提交:只需要編寫一個支持Map的FormHttpMessageConverter即可,內(nèi)部可調(diào)用FormHttpMessageConverter的方法簡化操作。
*支持文件上傳:只需要把要上傳的文件封裝成一個Resource(該Resource一定要實現(xiàn)filename接口,這個是把請求參數(shù)解析成文件的標識),使用默認的ResourceHttpMessageConverter處理即可。
*支持處理MultipartFile參數(shù):編寫一個支持MultipartFile的MultipartFileHttpMessageConverter即可,內(nèi)部可調(diào)用ResourceHttpMessageConverter實現(xiàn),同時注意需要將其添加至FormHttpMessageConverter的Parts中,并重寫FormHttpMessageConverter的getFilename方法支持從MultipartFile中獲取filename
*所有的HttpMessageConverter直接以@Bean的方式生成即可,spring會自動識別添加

完美支持表單和文件上傳:

方案一:

使用附件中的MapFormHttpMessageConverter.java和MultipartFileHttpMessageConverter.java

在Spring中進行如下配置即可

@Bean
public MapFormHttpMessageConverter mapFormHttpMessageConverter(MultipartFileHttpMessageConverter multipartFileHttpMessageConverter) {
 MapFormHttpMessageConverter mapFormHttpMessageConverter = new MapFormHttpMessageConverter();
 mapFormHttpMessageConverter.addPartConverter(multipartFileHttpMessageConverter);
 return mapFormHttpMessageConverter;
}

@Bean
public MultipartFileHttpMessageConverter multipartFileHttpMessageConverter() {
 return new MultipartFileHttpMessageConverter();
}

方案二:

使用FeignSpringFormEncoder.java

在Spring中配置如下:

@Bean
public Encoder feignEncoder(ObjectFactory<HttpMessageConverters> messageConverters) {
 return new FeignSpringFormEncoder(messageConverters);
}

看完上述內(nèi)容,你們掌握Spring Cloud中怎么使用 Feign上傳文件的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

文章名稱:SpringCloud中怎么使用Feign上傳文件
文章鏈接:http://aaarwkj.com/article22/psdocc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、網(wǎng)站維護云服務器、網(wǎng)頁設計公司、網(wǎng)站設計公司、自適應網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
人妻日韩精品综合一二三四| 国产麻豆精品二区视频| 欧美成人精品资源在线观看| 色综合婷婷九月中文字幕| 日本高清有码中文字幕| 欧美精品在线观看不卡一区| 大片天天看菲色亚洲黄色| 成人精品超碰一区二区| 亚洲精品国产二区中文字幕| 精品不卡一区二区三区| 国产一边打电话一边操| 欧美一区二区三区精美| 国产91极品尤物白丝美女| 一区二区三区免费视频少妇| 午夜激情视频免费国产| 久久视热频这里只有精品| 日本人妻在线一区二区三区| 91超碰这里只有精品国产| 岛国少妇av之中文字幕| 欧美精品国产亚洲另类| 亚州欧美制服另类国产| 成年爽片在线观看播放欧美| 成人av免费高清在线播放| 国产日韩精品激情另类综合| 亚洲精品露脸自拍高清在线观看| 中文字幕av在线有码| 国产在线精品专区第一页 | 亚洲精品国产av成人| 欧美日韩亚洲精品一区二区三区| 午夜在线成人免费观看| 成人爱爱免费观看视频| 青青草原在线影视一区| 久久久国产精品9999综合| 亚洲欧美综合一区二区三区| 狠狠综合久久av一区二区大宝 | 色日韩在线观看视频| 亚洲最新一区二区在线观看| 日韩欧美亚洲国产另类| 国产av人妻精品一区二| 亚洲国产成人精品女人| 91午夜精品在线观看|