一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - Java教程 - Spring Cloud Feign文件傳輸的示例代碼

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

2021-05-07 11:07cipher Java教程

微服務中通常使用 Feign 作為服務消費者,那么如何使用 Feign 接口傳輸文件呢?這篇文章主要介紹了Spring Cloud Feign文件傳輸的示例代碼,感興趣的小伙伴們可以參考一下

一、配置文件解析器

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

依賴:

?
1
2
3
4
5
<dependency>
  <groupid>commons-fileupload</groupid>
  <artifactid>commons-fileupload</artifactid>
  <version>1.3.1</version>
</dependency>

注入 bean :

?
1
2
3
4
5
6
@bean(name = "multipartresolver")
public multipartresolver mutipartresolver(){
  commonsmultipartresolver com = new commonsmultipartresolver();
  com.setdefaultencoding("utf-8");
  return com;
}

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

?
1
@springbootapplication(exclude = {multipartautoconfiguration.class})

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

controller 的寫法:

?
1
2
3
4
5
6
7
8
9
10
11
@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長度限制。

三、服務消費者配置

依賴:

?
1
2
3
4
5
6
7
8
9
10
<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>

文件編碼配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
 
@configuration
public class multipartsupportconfig{
 
  @autowired
  private objectfactory<httpmessageconverters> messageconverters;
 
  @bean
  public encoder feignformencoder(){
    return new springformencoder(new springencoder(messageconverters));
  }
 
}

feign 接口定義:

?
1
2
3
4
5
6
7
8
9
10
11
@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 接口傳輸到遠端:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 注入 feign 接口
@autowired
private uploadservice uploadservice;
 
@requestmapping(value = "/upload", method = requestmethod.post, produces = "application/json; charset=utf-8")
@responsebody
public 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 調用接口,把文件傳給服務提供者,服務提供者拿到文件后,進行相應的業務處理。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.ciphermagic.cn/spring-cloud-feign-upload.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九色PORNY蝌蚪视频首页 | aaa黄色| 肥奶丰熟肥妇 | 丰满大屁股美女一级毛片 | 欧美一区欧美二区 | 美女下面揉出水免费视频 | 国产精品免费一级在线观看 | 免费岛国片| 免费看视频高清在线观看 | 超兴奋朋友的中文字幕下 | 99免费在线视频 | 办公室出轨秘书高h | 99热国产这里只有精品 | 日韩先锋| 王王的视频ivk | 青草青视频 | avtt手机版| 操碰91 | 欧美高清在线 | ipx358cn出差被男上司在线 | 色老板美国在线观看 | 艾秋麻豆果冻剧传媒在线播放 | 无码人妻少妇色欲AV一区二区 | 日韩欧免费一区二区三区 | 操一操影院 | 青青国产在线视频 | 免费亚洲成人 | 91国内精品久久久久怡红院 | 全彩成人18h漫画 | 91中文在线 | 国产精品久久香蕉免费播放 | 欧美一级欧美三级在线 | 日本最大的黄色网站 | 青青青在线免费 | 极品手交handjobtattoo | 色妞视频一级毛片 | 亚洲国产精品热久久 | 3d肉浦团在线观看 | 日本久久啪啪婷婷激情五月 | 国产一区二区三区福利 | 男女男精品视频免费观看 |