RestTemplateを使用してローカルファイルをサーバにアップロード

2381 ワード

詳細
/**
     *             
     *
     * @param region                   
     * @param userId             id
     * @param targetFolderUuid       id
     * @param filePath               
     * @return
     */
    public static String uploadFileToFileSystem(String region, String userId, String targetFolderUuid, String filePath) {
        FileSystemResource resource = new FileSystemResource(filePath);
        if (!resource.exists() || Strings.isNullOrEmpty(targetFolderUuid)) {
            return null;
        }
        MultiValueMap param = new LinkedMultiValueMap<>();
        param.add("file", resource);
        param.add("userId", userId);
        param.add("targetFolderUuid", targetFolderUuid);
        try {
            String fileServerIp = getFileServerIp(region);
            ResponseEntity responseEntity = innerTokenAccess(HttpMethod.POST, fileServerIp + UPLOAD_URL, param, MediaType.MULTIPART_FORM_DATA);
            JSONObject jsonObject = JSONObject.fromObject(responseEntity.getBody());
            return jsonObject.getString("fileUuid");
        } catch (Exception e) {
            LOG.info("           :{}", e.getMessage());
        }
        return null;
    }

/**
     *   RestTemplate      
     *
     * @param method            POST or GET OR ...
     * @param url          url
     * @param obj            
     * @param mediaType      
     * @return
     * @throws Exception
     */
    public static ResponseEntity innerTokenAccess(HttpMethod method, String url, Object obj, MediaType mediaType) throws Exception {
        LOG.info("     :" + url);
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.setContentType(mediaType);
        HttpEntity httpEntity = new HttpEntity(obj, httpHeaders);
        ResponseEntity result = restTemplate.exchange(url, method, httpEntity, String.class);
        LOG.info("    :" + url + "     :" + result.getStatusCodeValue());
        return result;
    }