国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

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

2024-07-09 22:40:26
字體:
來源:轉載
供稿:網友

實踐案例包括兩個項目,服務提供者項目名: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>

創建FeignClient接口(用于指定遠程調用的服務)

// 申明這是一個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);  } }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三穗县| 阿克| 屯昌县| 蒙阴县| 朝阳县| 淮滨县| 吉林市| 韶山市| 西林县| 湖南省| 且末县| 洛川县| 尼玛县| 满洲里市| 增城市| 嘉禾县| 湖南省| 陵水| 夏邑县| 平塘县| 乳源| 宣武区| 合阳县| 无锡市| 新乡市| 尚志市| 新巴尔虎右旗| 瑞金市| 瓦房店市| 肃宁县| 扶风县| 温泉县| 新晃| 章丘市| 繁昌县| 通城县| 绥棱县| 兴业县| 鹤峰县| 海林市| 平阳县|