0
点赞
收藏
分享

微信扫一扫

http 文件传输请求

juneyale 03-15 18:00 阅读 2

 

 

可能用到:       
 <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.5.14</version>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

 

 

@PostMapping(value = "uploadFile")
    public String publicUpload(MultipartHttpServletRequest request) throws Exception {
        String url = "https://xxx/uploadFile";
//        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        //获取上传上来的文件
        Map<String, MultipartFile> fileMap = request.getFileMap();
        return HttpUtils.doFilePost(url, fileMap);

 

/**
     * 调用接口
     *
     * @param url         远程接口地址
     * @param fileMap     文件参数
     */
    public static String doFilePost(String url,
                         Map<String, MultipartFile> fileMap) throws Exception {
        //设置请求头
//        HttpHeaders headers = new HttpHeaders();
//        httpHeaders.forEach(headers::set);
//        MediaType type = MediaType.parseMediaType(contentType);
//        headers.setContentType(type);
        MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
        //设置发送文件
        if (!fileMap.isEmpty()) {
            for (Map.Entry<String, MultipartFile> entry : fileMap.entrySet()) {
                MultipartFile value = entry.getValue();
                ByteArrayResource is = new ByteArrayResource(value.getBytes()) {
                    @Override
                    public String getFilename() {
                        return value.getOriginalFilename();
                    }
                };
                form.set(entry.getKey(), is);
            }
        }
        //设置其它参数
//        if (StringUtils.isNotBlank(body)) {
//            Map<String, String> paramMap = JSON.parseObject(body, Map.class);
//            paramMap.forEach(form::set);
//        }
        //调用接口并接收返回值
        HttpEntity<MultiValueMap<String, Object>> params = new HttpEntity<>(form);
        RestTemplate restTemplate = new RestTemplate();
        String res;
        try {
            res = restTemplate.postForObject(url, params, String.class);
            log.info("接口正常,doResponse=>{}", res);
        } catch (RestClientResponseException e) {
            //异常处理
            log.error("接口异常,doResponseException => ", e);
            res = e.getResponseBodyAsString();
        }
        return res;
    }

 

举报

相关推荐

0 条评论