当前位置: 首页 > article >正文

restTemplate发送multipartFile和String混合参数及接收

最近有个任务是将文件上传到服务器后再发送到另一台服务器接收,作为一个代码表述为主的程序员,文字表达能力有限,就上代码吧~~

前端代码片段

<table>
    <tbody>
    <tr>
        <td>需要上传服务器的文件</td>
        <td>
            <input type="file" id="file0001">
        </td>
    </tr>
    </tbody>
</table>
<div class="button-container">
    <input type="submit" value="上传" @click="uploadMiniIO">
</div>
uploadMiniIO: function () {
    var that = this;
    var formData = new FormData();
    formData.append("structureFile", document.getElementById('file0001').files[0]);
    formData.append("structureFileType", "proj");
    $.ajax({
        url: epmsServerUrl + '/history-pms-project-transfer/upload-structure-file',
        type: 'POST',
        data: formData, // 上传formdata封装的数据包
        dataType: 'JSON',
        processData: false,// jQuery不要去处理发送的数据
        contentType: false, // jQuery不要去设置Content-Type请求头
        success: function (data) {
            that.info = data.data;
        }
    })
}

后台接收端代码

@PostMapping("/upload-structure-file")
public Result uploadFileByFileId(@RequestPart("structureFile") MultipartFile multipartFile, String structureFileType){
    Map<String, Object> map = new HashMap<>();
    map.put("structureFileType", structureFileType);
    return restTemplateUtils.postForMiniIO(pmsminiioUploadStructureFiles, multipartFile, map);
}

public Result postForMiniIO(String url, MultipartFile multipartFile, Map<String, Object> reqMap) {
    //设置请求头
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.MULTIPART_FORM_DATA);

    //设置请求体,注意是LinkedMultiValueMap
    ByteArrayResource byteArrayResource = null;
    try {
        byteArrayResource = new ByteArrayResource(multipartFile.getBytes()) {
            @Override
            public long contentLength() {
                return multipartFile.getSize();
            }

            @Override
            public String getFilename() {
                return multipartFile.getOriginalFilename();
            }
        };
    } catch (IOException e) {
        Result.error(-1, "上传文件失败,文件二进制获取失败");
    }
    MultiValueMap<String, Object> form = new LinkedMultiValueMap<>();
    form.add("structureFile", byteArrayResource);
    form.setAll(reqMap);

    HttpEntity<MultiValueMap<String, Object>> files = new HttpEntity<>(form, headers);
    return restTemplate.postForObject(url, files, Result.class);
}

//远端接收代码
@PostMapping("/upload-structure-file")
public Result uploadFileByFileId(@RequestPart("structureFile") MultipartFile multipartFile, String structureFileType){
    Map<String, Object> map = new HashMap<>();
    map.put("structureFileType", structureFileType);
    map.put("structureFile", multipartFile);
}

http://www.kler.cn/a/9469.html

相关文章:

  • Redo与Undo的区别:数据库事务的恢复与撤销机制
  • Java面向对象编程进阶之包装类
  • 蓝桥杯每日真题 - 第7天
  • CentOS 服务
  • 软件工程概论项目(二),node.js的配置,npm的使用与vue的安装
  • 【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)
  • 素数环PrimeRing [3*]
  • redis 基础数据结构
  • 基于多种算法实现鸢尾花聚类
  • Spark SQL实战(04)-API编程之DataFrame
  • 最新阿里、腾讯、华为、字节等大厂的薪资和职级对比,看看你差了多少...
  • 企业工程项目管理系统源码+java版本+项目模块功能清单+spring cloud +spring boot
  • 打开 plist 文件
  • 因薪资低拒绝offer,HR恼羞成怒,网友瞬间炸翻了..
  • Numpy基础用法
  • Android中的接口回调机制
  • 时光煮雨,岁月缝花
  • 两亲性聚合物Stearic acid PEG acid,STA-PEG-acid,硬脂酸聚乙二醇羧酸
  • LAMP架构的配置
  • Flink CDC 自定义反序列化
  • java 合作社交易系统Myeclipse开发mysql数据库mvc结构serlvet编程计算机网页项目
  • 多维时序 | MATLAB实现GRU门控循环单元多变量时间序列预测(多指标评价)
  • 【大数据开发运维解决方案】ssh: undefined symbol: EVP_KDF_ctrl, version OPENSSL_1_1_1b问题解决过程
  • 【Java面试八股文宝典之RabbitMQ篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day17
  • QT桌面的构建
  • es6和commonJs的区别