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

使用Feign實(shí)現(xiàn)微服務(wù)間文件下載

 更新時(shí)間:2019年04月26日 09:51:37   作者:AaronSimon  
這篇文章主要為大家詳細(xì)介紹了使用Feign實(shí)現(xiàn)微服務(wù)間文件下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在使用Feign做服務(wù)間調(diào)用的時(shí)候,當(dāng)下載大的文件會(huì)出現(xiàn)堆棧溢出的情況。另外,文件管理服務(wù)(服務(wù)提供者)文件下載接口無返回值,是通過HttpServletRespoonse傳輸?shù)牧鲾?shù)據(jù)來響應(yīng),那么服務(wù)消費(fèi)者該如何接受下載的數(shù)據(jù)呢?

一. 示例介紹

我們調(diào)用feign_upload_second的下載文件接口下載文件,feign_upload_second內(nèi)部使用feign調(diào)用feign_upload_first實(shí)現(xiàn)文件下載。

二、feign_upload_first服務(wù)提供者

服務(wù)提供者下載文件接口

@RequestMapping(value = "/downloadFile",method = RequestMethod.GET,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
 public void downloadFile(HttpServletResponse response){
  String filePath = "D://1.txt";
  File file = new File(filePath);
  InputStream in = null;
  if(file.exists()){
  try {
   OutputStream out = response.getOutputStream();
   in = new FileInputStream(file);
   byte buffer[] = new byte[1024];
   int length = 0;
   while ((length = in.read(buffer)) >= 0){
   out.write(buffer,0,length);
   }
  } catch (IOException e) {
   e.printStackTrace();
  } finally {
   if(in != null){
   try {
    in.close();
   } catch (IOException e) {
    e.printStackTrace();
   }
   }
  }
  }
 }

三、feign_upload_second服務(wù)消費(fèi)者

服務(wù)提供者遠(yuǎn)程調(diào)用接口

@RequestMapping(value = "/downloadFile",method = RequestMethod.GET,consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
 Response downloadFile();

用feign.Response來接收

服務(wù)提供者下載文件接口

@RequestMapping(value = "/download",method = RequestMethod.GET)
 public ResponseEntity<byte[]> downFile(){
 ResponseEntity<byte[]> result=null ;
 InputStream inputStream = null;
 try {
  // feign文件下載
  Response response = uploadService.downloadFile();
  Response.Body body = response.body();
  inputStream = body.asInputStream();
  byte[] b = new byte[inputStream.available()];
  inputStream.read(b);
  HttpHeaders heads = new HttpHeaders();
  heads.add(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=123.txt");
  heads.add(HttpHeaders.CONTENT_TYPE,MediaType.APPLICATION_JSON_VALUE);

  result = new ResponseEntity <byte[]>(b,heads, HttpStatus.OK);
 } catch (IOException e) {
  e.printStackTrace();
 } finally {
  if(inputStream != null){
  try {
   inputStream.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  }
 }
 return result;
}

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

相關(guān)文章

最新評(píng)論

托克托县| 呈贡县| 湘潭市| 无棣县| 康马县| 阳原县| 盐亭县| 沁阳市| 东莞市| 澎湖县| 万州区| 石泉县| 白山市| 新疆| 卢龙县| 广南县| 广灵县| 平泉县| 平武县| 磴口县| 大同市| 南安市| 盖州市| 鄂托克前旗| 太湖县| 利津县| 北票市| 许昌县| 镇安县| 五常市| 阿瓦提县| 惠水县| 郴州市| 桐城市| 衡阳市| 峨眉山市| 大港区| 开原市| 大冶市| 尉犁县| 汕头市|