实现微服务间restTemplate方式传递文件 MultipartFile file

请求端:

1. 封装参数

MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap<>();
        List<Resource> tmpResource = new ArrayList<>();
        Arrays.stream(multipartfiles).forEach(multipartFile -> {
            tmpResource.add(multipartFile.getResource());
        });
        multiValueMap.addAll("file", tmpResource);
        multiValueMap.add("req", fileUploadReq);

2.远程调用

Resp result = BaseUtil.postForObject2(restTemplate, RestApi.UPLOAD_FILE, multiValueMap, Resp.class, MediaType.MULTIPART_FORM_DATA);
        if (null != result && result.getCode().equals(CODE.success.getCode())) {
            log.info("RestApi.UPLOAD_FILE=====" + result.getCode());
        }

远程调用中封装的postForObject2方法

public static <T> T postForObject2(RestTemplate restTemplate, String url, Object obj, Class<T> respType, MediaType mediaType) {
        log.info("开始调用远程服务....");
        if (StringUtil.isNull(url)) {
            log.error("请求url不能为空");
            return null;
        }
        if (null == respType) {
            log.error("响应类型不能为空");
            return null;
        }
        log.info("请求地址:" + url);
        log.info("请求参数:" + (obj == null ? "" : obj.toString()));

        /**设置请求头*/
        HttpHeaders headers = new HttpHeaders();
        if (mediaType == null) {
            headers.setContentType(MediaType.APPLICATION_JSON);
        } else {
            headers.setContentType(mediaType);
        }

        /**设置请求体*/
        HttpEntity<Object> entity = new HttpEntity<>(obj, headers);

        /**请求*/
        T resp;
        try {
            resp = restTemplate.postForObject(url, entity, respType);
            log.info("响应结果:" + (resp == null ? null : resp.toString()));
        } catch (Exception e) {
            log.error("远程调用异常:" + e.toString());
            return null;
        }
        log.info("调用远程服务完成====");
        return resp;
    }

服务端:

    /**
     * 服务之间调用上传文件入口
     * @param file
     * @param req
     * @return
     * @throws Exception
     */
    @RequestMapping("uploadFileCommonForService")
    public FileUploadReq uploadFileCommonForService(@Valid List<MultipartFile> file, @RequestPart FileUploadReq req) throws Exception {
        return iFileUploadService.uploadFileCommon(file, req);
    }

另外一种方式 feigin方式传递文件:https://blog.csdn.net/buyaopingbixiazai/article/details/115537084

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

buyaopingbixiazai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值