亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

spring cloud feign實現遠程調用服務傳輸文件的方法

2024-07-14 08:42:14
字體:
來源:轉載
供稿:網友

實踐案例包括兩個項目,服務提供者項目名:upload-service,調用服務項目名:upload-client,主要給出兩個服務之間的調用過程,文件上傳功能不提供

項目框架:spring-boot 2.0.1.RELEASE、spring-cloud Finchley.RELEASE

依賴:

  <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>  <dependency>   <groupId>commons-fileupload</groupId>   <artifactId>commons-fileupload</artifactId>   <version>1.3.3</version>  </dependency>

 

// 申明這是一個Feign客戶端,并且指明服務id@FeignClient(value = "com-spring-caclulate") public interface CacluFeignClient { // 這里定義了類似于SpringMVC用法的方法,就可以進行RESTful的調用了 @RequestMapping(value = "/caclu/{num}", method = RequestMethod.GET) public Item caclulate(@PathVariable("num") Integer num);} 

一.文件上傳服務upload-service

1.控制層

@Slf4j@CrossOrigin@RestController@RequestMapping("/ftp")@Api(description = "文件上傳控制")public class FtpFileController { @Autowired private FtpFileService ftpFileService; /**  * FTP文件上傳  *  * @return  */ @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public FtpApiResponse<FtpUploadResDTO> uploadFileFTP(@RequestPart(value = "file") MultipartFile file,               @RequestParam("logId") String logId) {  FtpApiResponse<FtpUploadResDTO> result = new FtpApiResponse<>();  LogUtil.updateLogId(logId);  try {   log.info("文件上傳開始!}");   Long startTime = System.currentTimeMillis();   FtpUploadResDTO resDTO = ftpFileService.uploadFile(file);   result.setData(resDTO);   result.setSuccess(true);   result.setTimeInMillis(System.currentTimeMillis() - startTime);   log.info("文件上傳結束 resDTO:{},耗時:{}", resDTO, (System.currentTimeMillis() - startTime));  } catch (ServiceException e){   result.setSuccess(false);   result.setErrorCode(ErrorMsgEnum.FILE_UPLOAD_EXCEPTION.getCode());   result.setErrorMsg(ErrorMsgEnum.FILE_UPLOAD_EXCEPTION.getMsg());  } catch (Exception e) {   result.setSuccess(false);   result.setErrorCode(ErrorMsgEnum.SYSTEM_ERROR.getCode());   result.setErrorMsg(ErrorMsgEnum.SYSTEM_ERROR.getMsg());   log.info("文件上傳失敗 Exception:{}", Throwables.getStackTraceAsString(e));  }  return result; }}

2.業務層

@Service@Slf4jpublic class FtpFileService { @Autowired private FtpFileManager ftpFileManager; /**  * 上傳文件  *  * @param file  * @return  */ public FtpUploadResDTO uploadFile(MultipartFile file) {  try {   //判斷上傳文件是否為空   if (null == file || file.isEmpty() || file.getSize() == 0) {    log.info("傳入的文件為空,file:{}", file);    throw new ServiceException(ErrorMsgEnum.EMPTY_FILE);   }   //文件上傳至ftp服務目錄   FtpFileRecordDO ftpFileRecordDO = ftpFileManager.fileUploadToFtp(file);   if (null == ftpFileRecordDO) {    log.info("文件上傳至ftp服務目錄異常");    throw new ServiceException(ErrorMsgEnum.FILE_UPLOAD_TO_FTP_EXCEPTION);   }   return ftpFileManager.addFileRecord(ftpFileRecordDO);  } catch (Exception e) {   log.error("業務異常,case", e);   throw new ServiceException(ErrorMsgEnum.SYSTEM_ERROR);  } }}

3.服務寫好后,需要把遠程接口暴露出去

@FeignClient(value = "upload-service", configuration = UpDownFtpFacade.MultipartSupportConfig.class)public interface UpDownFtpFacade { /**  * FTP上傳文件  *  * @param file 文件  * @param logId 日志id  * @return  */ @PostMapping(value = "/ftp/uploadFile",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) FtpApiResponse<FtpUploadResDTO> uploadFileFTP(@RequestPart(value = "file") MultipartFile file,             @RequestParam("logId") String logId); /**  * 引用配置類MultipartSupportConfig.并且實例化  */ @Configuration class MultipartSupportConfig {  @Bean  public Encoder feignFormEncoder() {   return new SpringFormEncoder();  } }}

二.文件上傳客戶端upload-client

@Slf4j@Componentpublic class FileManager {  @Autowired  private UpDownFtpFacade upDownFtpFacade;    /**  * 調用遠程上傳文件接口  *  * @param file 待上傳的文件  * @return 下載路徑  **/ public FtpApiResponse<FtpUploadResDTO> requestFtpFacade(MultipartFile file) {  try {   DiskFileItem fileItem = (DiskFileItem) new DiskFileItemFactory().createItem("file",     MediaType.ALL_VALUE, true, file.getOriginalFilename());   InputStream input = file.getInputStream();   OutputStream os = fileItem.getOutputStream();   IOUtils.copy(input, os);   MultipartFile multi = new CommonsMultipartFile(fileItem);   FtpApiResponse<FtpUploadResDTO> response = upDownFtpFacade.uploadFileFTP(multi, LogUtil.getLogId());   if (null == response || !response.getSuccess() || null == response.getData()) {    throw new ManagerException(ErrorMsgEnum.FIlE_UPLOAD_FAILED);   }   return response;  } catch (Exception e) {   throw new ManagerException(ErrorMsgEnum.FIlE_UPLOAD_FAILED);  }  }}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕日韩精品在线| 亚洲a区在线视频| 永久免费毛片在线播放不卡| 欧美一级成年大片在线观看| 国产日韩在线一区| 午夜精品视频网站| 欧美福利视频网站| 亚洲成人久久久| 欧美日在线观看| 国产精品视频永久免费播放| 亚洲国产中文字幕久久网| 日韩视频在线免费| 亚洲免费福利视频| 日本亚洲欧美三级| 91久久国产婷婷一区二区| 成人性生交大片免费看小说| 日韩欧美国产黄色| 国产免费一区二区三区在线能观看| 国产成人一区二区三区| 久久精品国产一区二区电影| 九九热这里只有精品6| 国产成人精品久久| 欧美国产日韩精品| 国产精品久久久久国产a级| 日韩视频欧美视频| 亚洲欧美国产精品久久久久久久| 精品小视频在线| 国产成人av网址| 55夜色66夜色国产精品视频| 日本国产精品视频| 国产激情综合五月久久| 欧美激情第1页| 亚洲精品视频在线播放| 亚洲欧美精品在线| 国产做受高潮69| 久久精品美女视频网站| 欧美性xxxxx极品娇小| 成人激情视频在线观看| 欧美性猛交xxxx富婆弯腰| 久久久久久久97| 欧美日韩国产999| 日韩在线视频网| 欧美成人自拍视频| 亚洲第一精品电影| 国产美女精品视频| 91色在线观看| 日韩国产在线播放| 中国人与牲禽动交精品| 国产精彩精品视频| 亚洲一区二区自拍| 亚洲电影免费观看高清完整版| 欧美午夜精品在线| 欧美日韩国产限制| 三级精品视频久久久久| 欧美丝袜一区二区| 日本免费在线精品| 亚洲欧美日韩爽爽影院| 欧美激情视频在线免费观看 欧美视频免费一| 国产成人精品在线视频| 欧美日韩精品在线播放| 一区二区三区四区精品| 亚洲欧美日韩天堂| 亚洲精品久久久久| 亚洲国产精品电影在线观看| 欧美精品日韩www.p站| 久久久久久com| 精品偷拍各种wc美女嘘嘘| 欧美在线不卡区| 91视频九色网站| 国产亚洲精品日韩| 国内久久久精品| 日韩电影免费在线观看中文字幕| 国产热re99久久6国产精品| 欧美黑人巨大精品一区二区| 狠狠色狠色综合曰曰| 精品久久久一区| 国产成人av在线播放| 日韩电影免费在线观看中文字幕| 欧美在线精品免播放器视频| 日产精品99久久久久久| 国产精品自拍偷拍| 国产精品久久久久免费a∨| 亚洲缚视频在线观看| 国产免费一区二区三区在线观看| 亚洲aa中文字幕| 亚洲成人国产精品| 成人免费淫片视频软件| 国产精品入口免费视频一| 91免费综合在线| 揄拍成人国产精品视频| 欧美日韩精品在线观看| 欧美大尺度电影在线观看| 色偷偷av一区二区三区乱| 欧美性精品220| 欧美伦理91i| 亚洲欧美日韩高清| 成人福利视频在线观看| 日韩第一页在线| 欧美精品videos性欧美| 欧美日韩人人澡狠狠躁视频| 久久手机免费视频| 在线激情影院一区| 91免费电影网站| 姬川优奈aav一区二区| 亚洲**2019国产| 26uuu亚洲国产精品| 一区二区三欧美| 亚洲福利视频专区| 亚洲xxxx视频| 欧美成人性色生活仑片| 日韩在线国产精品| 91精品视频免费看| 欧美日韩精品在线观看| 欧美电影免费观看| 国产精品都在这里| 疯狂蹂躏欧美一区二区精品| 高潮白浆女日韩av免费看| 国产精品亚洲аv天堂网| 亚洲最大福利视频网站| 欧美色图在线视频| 亚洲午夜性刺激影院| 亚洲第一精品福利| 国产这里只有精品| 欧美华人在线视频| 日韩av在线网| 国产成人亚洲精品| 国产欧美精品在线| 欧美日韩国产综合新一区| 91久久国产精品| 国产中文欧美精品| 亚洲人精选亚洲人成在线| 精品久久中文字幕久久av| 这里只有精品在线播放| 久久影院免费观看| 欧美性色xo影院| 国产精品com| 国产成人亚洲综合91| 亚洲性线免费观看视频成熟| 久久久久久高潮国产精品视| 日韩中文字幕第一页| 精品成人久久av| 欧美成人激情图片网| 91国产中文字幕| 精品久久久国产精品999| 国产日韩视频在线观看| 91视频-88av| 亚洲第一中文字幕在线观看| 成人黄色大片在线免费观看| yw.139尤物在线精品视频| 久久97精品久久久久久久不卡| 成人福利在线视频| 亚洲美女久久久| 一区二区三区四区视频| 欧美亚洲成人精品| 一本色道久久88综合亚洲精品ⅰ| 欧美日韩在线免费观看| 精品免费在线视频| 久热国产精品视频| 国内精品免费午夜毛片| 国产精品99久久99久久久二8| 欧美激情aaaa| 日韩美女免费视频| 最近2019年好看中文字幕视频| 国产日韩在线观看av|