Sringプロジェクト間のファイル転送(ビルの主な測定が有効)

2526 ワード

Springプロジェクト間のファイル転送
サービスの開発過程では、サービス間のファイル転送が常に必要です.関連フレームは、Springboot、Spring MVCなどです.関連する技術は、RertTemplate、FileSystemResource、MultiiprtFileなどがあります.
  • プロジェクト間のファイル転送プロジェクトBはプロジェクトAにファイルを転送する.例えばプロジェクトA:インターフェースがあります.受信したファイルパラメータの種類は、以下の図の通りです.
  • @PostMapping("uploadReport")
        public JsonResult uploadReport(@Valid String number, @Valid MultipartFile multipartFile) {
            log.debug("REST request to uploadReport. number: {}", number);
            OperationResult result = reportManageService.uploadReport(number, multipartFile);
            if (result.getSucc()) {
                return success(result.getEntity());
            }
            return error(result.getCode(), result.getMessage());
        }
    
  • プロジェクトBにおいて、送信された要求のコードは、下図のようになっています.
  • public OperationResult uploadReport() throws IOException {
            //     
            HttpHeaders requstHttpHeaders = new HttpHeaders();
            //      
            StringBuilder remoteUrl = new StringBuilder();
            remoteUrl.append("http://172.16.xx.xx:8080/").append("api/xxx/uploadReport");
    
            //                
            File filepath = new File("/Users/wangdong/Desktop/buzaihu.jpg");
            FileSystemResource fileSystemResource = new FileSystemResource(filepath);
            //               FileSystemResource
            MultiValueMap params = new LinkedMultiValueMap<>();
            params.add("number",87000016);
            params.add("multipartFile",fileSystemResource);
            //         ,  HttpEntity
            HttpEntity> httpEntity = new HttpEntity<>(params, requstHttpHeaders);
            //             RemoteUser                   (           )
            ResponseEntity result = restTemplate.postForEntity(remoteUrl.toString(), httpEntity, String.class);
            //       ,        debug  result         
            if (!String.valueOf(result.getStatusCodeValue()).equals(SystemCode.SUCCESS.getCode())) {
                return new OperationResult<>(SelfErrorCode.REMOTE_REQUEST_ERROR.getCode(), selfSystemErrorCode.getRemoteRequestError());
            }
            if (null == result.getBody()) {
                return new OperationResult<>(SelfErrorCode.REMOTE_RETURN_NULL.getCode(), selfSystemErrorCode.getRemoteReturnNull());
            }
            return new OperationResult<>(true);
    }
    
    以上のコードはビルの主な測定によって有効です.少量の変更だけで使えます.仕事が順調に行きますように.