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

SpringCloud使用Feign文件上傳、下載

 更新時間:2019年04月24日 14:22:00   作者:jasnet_u  
這篇文章主要為大家詳細介紹了SpringCloud使用Feign文件上傳、下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

文件上傳、下載也是實際項目中會遇到的場景,本篇我們介紹下springcloud中如何使用feign進行文件上傳與下載。

還是使用feign 進行http的調(diào)用。

一、Feign文件上傳

服務(wù)提供方j(luò)ava代碼:

/**
 * 文件上傳
 * @param file 文件 
 * @param fileType 
 * @return
 */
@RequestMapping(method = RequestMethod.POST, value = "/uploadFile",
  produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},
  consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String uploadFile(@RequestPart(value = "file") MultipartFile file,
  @RequestParam(value = "fileType") String fileType,
  HttpServletRequest request,HttpServletResponse response) {
 System.out.println("fileType:"+fileType);
 long size= file.getSize();
 String contentType= file.getContentType();
 String name = file.getName();
 String orgFilename= file.getOriginalFilename(); 
 System.out.println("size:"+size);
 System.out.println("contentType:"+contentType);
 System.out.println("name:"+name);
 System.out.println("orgFilename:"+orgFilename);
  
 String suffix = orgFilename.substring(orgFilename.lastIndexOf("."));//后綴
  
 String uuid =UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();
  
 File dest = new File("f:/b13/"+uuid+suffix);
  try {
  file.transferTo(dest);
   
  return dest.getCanonicalPath();//文件的絕對路徑
 } catch (IllegalStateException | IOException e) {
  e.printStackTrace();
 }
  return "failure";
}

服務(wù)提供方Feign api接口:

@RequestMapping(method = RequestMethod.POST, value = "/uploadFile",
   produces = {MediaType.APPLICATION_JSON_UTF8_VALUE},
   consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
 public String uploadFile(@RequestPart(value = "file") MultipartFile file, @RequestParam(value = "fileType") String fileType);

服務(wù)消費方:

pom.xml 

<!-- 引入文件feign文件上傳依賴 -->
 <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>

java代碼:

@Autowired
private UserProControllerApi userProControllerApi;
 
 
 @ResponseBody
 @RequestMapping("/user_uploadFile")
 public Object user_uploadFile(HttpServletRequest request,HttpServletResponse response,
   @RequestPart(value = "file") MultipartFile file, String fileType) {
 
  System.out.println(fileType);
  
  return userProControllerApi.uploadFile(file, fileType);
}

MultipartSupportConfig.java

@Configuration
public class MultipartSupportConfig {
  
  
 @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;
  }
 
}

二、Feign文件下載

服務(wù)提供方j(luò)ava代碼:

/**
  * 文件(二進制數(shù)據(jù))下載
  * @param fileType 文件類型
  * @return
  */
  @RequestMapping("/downloadFile")
  public ResponseEntity<byte[]> downloadFile(String fileType,HttpServletRequest request ){
   
   System.out.println(request.getParameter("fileType"));
   System.out.println("參數(shù)fileType: "+fileType);
   
   HttpHeaders headers = new HttpHeaders();
   ResponseEntity<byte[]> entity = null;
   InputStream in=null;
   try {
   in=new FileInputStream(new File("d:/myImg/001.png"));
    
   byte[] bytes = new byte[in.available()];
    
   String imageName="001.png";
   
   //處理IE下載文件的中文名稱亂碼的問題
   String header = request.getHeader("User-Agent").toUpperCase();
   if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
    imageName = URLEncoder.encode(imageName, "utf-8");
    imageName = imageName.replace("+", "%20"); //IE下載文件名空格變+號問題
   } else {
    imageName = new String(imageName.getBytes(), "iso-8859-1");
   }
    
   in.read(bytes);
   
   headers.add("Content-Disposition", "attachment;filename="+imageName);
    
   entity = new ResponseEntity<byte[]>(bytes, headers, HttpStatus.OK);
   
  } catch (Exception e) {
   e.printStackTrace();
  }finally {
   if(in!=null) {
    try {
     in.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
   
   return entity;
 }

服務(wù)提供方feign api接口 

@RequestMapping("/downloadFile")
  public ResponseEntity<byte[]> downloadFile(@RequestParam(value = "fileType") String fileType
    );

服務(wù)消費方

@ResponseBody
  @RequestMapping("/user_downloadFile")
  public Object user_downloadFile(HttpServletRequest request,HttpServletResponse response,
    String fileType) {
   ResponseEntity<byte[]> entity = userProControllerApi.downloadFile(fileType);
   System.out.println( entity.getStatusCode());
   return entity ;
}

注:實際項目中如果上傳的文件太大,可以使用ftp服務(wù)器保存上傳的文件,直接在controller端調(diào)用ftp接口即可。

如果下載的文件太大,則調(diào)用service端接口可返回一個ftp文件資源路徑,然后在controller端調(diào)用ftp下載文件即可。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在Java中實現(xiàn)二叉搜索樹的全過程記錄

    在Java中實現(xiàn)二叉搜索樹的全過程記錄

    二叉樹包含了根節(jié)點,孩子節(jié)點,葉節(jié)點,每一個二叉樹只有一個根節(jié)點,每一個結(jié)點最多只有兩個節(jié)點,左子樹的鍵值小于根的鍵值,右子樹的鍵值大于根的鍵值,下面這篇文章主要給大家介紹了關(guān)于如何在Java中實現(xiàn)二叉搜索樹的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 深入了解Java核心類庫--Objects類

    深入了解Java核心類庫--Objects類

    這篇文章主要介紹了Java中的Object類詳細介紹,本文講解了Object類的作用、Object類的主要方法、Object類中不能被重寫的方法、Object類的equals方法重寫實例等內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • JavaWeb響應(yīng)下載功能實例代碼(包含工具類)

    JavaWeb響應(yīng)下載功能實例代碼(包含工具類)

    今天通過本文給大家分享的是關(guān)于javaweb的響應(yīng)(response)下載功能,需要的朋友參考下吧
    2017-07-07
  • Struts2學習筆記(2)-路徑問題解決

    Struts2學習筆記(2)-路徑問題解決

    本文主要介紹Struts2的路徑問題,盡量不要使用相對路徑,使用相對路徑會讓路徑問題變得很繁瑣很麻煩,推薦使用絕對路徑,希望能給大家做一個參考。
    2016-06-06
  • SpringBoot 引?MybatisGenerator的實現(xiàn)步驟

    SpringBoot 引?MybatisGenerator的實現(xiàn)步驟

    本文主要介紹了SpringBoot 引?MybatisGenerator的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • springboot配置flyway(入門級別教程)

    springboot配置flyway(入門級別教程)

    本文介紹了springboot配置flyway,主要介紹基于SpringBoot集成flyway來管理數(shù)據(jù)庫的變更,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • SpringMVC通過模型視圖ModelAndView渲染視圖的實現(xiàn)

    SpringMVC通過模型視圖ModelAndView渲染視圖的實現(xiàn)

    這篇文章主要介紹了SpringMVC通過模型視圖ModelAndView渲染視圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • MapReduce核心思想圖文詳解

    MapReduce核心思想圖文詳解

    今天小編就為大家分享一篇關(guān)于MapReduce核心思想圖文詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • java數(shù)據(jù)結(jié)構(gòu)之插入排序

    java數(shù)據(jù)結(jié)構(gòu)之插入排序

    這篇文章主要為大家詳細介紹了java數(shù)據(jù)結(jié)構(gòu)之插入排序的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • spring boot 配置動態(tài)刷新詳解

    spring boot 配置動態(tài)刷新詳解

    這篇文章主要介紹了spring boot 配置動態(tài)刷新實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09

最新評論

彩票| 平山县| 柯坪县| 中江县| 政和县| 平山县| 景泰县| 满洲里市| 丹江口市| 永和县| 岳阳县| 浦北县| 卓尼县| 清徐县| 和林格尔县| 利津县| 枣阳市| 方城县| 武平县| 墨玉县| 历史| 土默特左旗| 泌阳县| 阜阳市| 和龙市| 蛟河市| 石家庄市| 张家口市| 和平县| 霸州市| 西和县| 玛曲县| 临西县| 城市| 建瓯市| 邵武市| 苍溪县| 全南县| 伽师县| 温州市| 宝应县|