package com.wind.service;
import com.wind.entity.CommonDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.LinkedHashMap;
/**
* @Author
* @Classname UploadService
* @Description 调用第三方获取可访问的url
* 注意点的:1. contentType multipart/form-data
* 2. 用原生的或者spring的 RestTemplate
* 3. MultipartFile 不可以序列化 (可能会包json 解析异常)
* @Date 2021/3/11 22:32
* @Created by windBird
*/
@Service
public class UploadService {
@Autowired
private RestTemplate restTemplate;
@Value("{$third.item.url}")
private String baseUrl;
/**
* 文件流 + 注入 RestTemplate +multipart/form-data
* @param image
* @return
* @Description 调用第三方 获取可访问的 URL 第三方接受的参数类型 MultipartFile
*/
public String getImageUrl(MultipartFile image) {
String openImageUrl = "";
LinkedMultiValueMap param = new LinkedMultiValueMap<>();
param.add("file", image.getResource());
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.parseMediaType("multipart/form-data"));
HttpEntity upParam = new HttpEntity<>(param, httpHeaders);
String url = baseUrl + "/uploadImage";
CommonDto resultData = restTemplate.postForEntity(url, upParam, CommonDto.class).getBody();
if (null != resultData) {
LinkedHashMap<String, Object> linkedHashMap = (LinkedHashMap<String, Object>) resultData.getData();
openImageUrl = String.valueOf(linkedHashMap.get("fileUrl"));
}
return openImageUrl;
}
/**
* 数组流+ new RestTemplate + multipart/form-data
* @param image
* @return
* @throws IOException
*/
public String getUrlByArrayByte(MultipartFile image) throws IOException {
String openImageUrl = "";
ByteArrayResource arrayResource = new ByteArrayResource(image.getBytes()) {
@Override
public String getFilename() {
return image.getOriginalFilename(); //必须要重写路径
}
};
LinkedMultiValueMap param = new LinkedMultiValueMap<>();
param.add("file", arrayResource);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.parseMediaType("multipart/form-data"));
HttpEntity upParam = new HttpEntity<>(param, httpHeaders);
RestTemplate restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory());
String url = baseUrl + "/uploadImage";
CommonDto resultData = restTemplate.postForEntity(url, upParam, CommonDto.class).getBody();
if (null != resultData) {
LinkedHashMap<String, Object> linkedHashMap = (LinkedHashMap<String, Object>) resultData.getData();
openImageUrl = String.valueOf(linkedHashMap.get("fileUrl"));
}
return openImageUrl;
}
}
相关推荐
方差迭代计算公式
方差迭代计算过程推导术语约定递推公式过程推导 术语约定 (1)En=1n∑i=1nxi E_n =\frac{1}{n} \sum_{i=1}^{n}x_i \tag{1} En=n1i=1∑nxi(1) (2)F(n)=∑i=1n(x2−En) F(n) = \sum_{i=1}^{n}{(x^2-E_n)} \tag{2} F(n)=i=1∑n(x2−En)(2) (3)V(n)...
RestTemplate发送MultipartFile
RestTemplate发送MultipartFileRestTemplate转发MultipartFile到另外一个接口转发端代码接收端 RestTemplate转发MultipartFile到另外一个接口 使用 RestTemplate 发送 MultipartFile 文件,这其实是个坑来的,MultipartFile 是 Spring 中的一个接口,主要用来接收请求中带有的文件形式。 当我们使用 RestTemplate 来传这个时,程序就报IO流异常。如果是保存完了再转发MultipartFil
h5页面调用微信JS-SDK分享到微信好友或者朋友圈的配置
1.引入js <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> 2.在页面添加配置 <script type="text/javascript"> var url = location.href..
【SpringBoot】使用RestTemplate在服务之间进行MultipartFile格式文件的传递
文章目录1、前言2、原因分析3、解决办法 1、前言 最近开发过程中遇到这样的问题,在使用RestTemplate进行两个后台服务之间文件传递的时候,直接使用MultipartFile格式来传递的时候抛出异常。 2、原因分析 MultipartFile是Spring框架中提供的一种用于文件处理的接口,一般用于前端进行文件的上传,后端使用MultipartFile类型来进行文件的接收;当使用RestTemplate的post方法进行来传递接收到的MultipartFile类型文件时,由于RestTemplate
如何入门强化学习
很多同学在入门强化学习的时候都会遇到困难,那我这里就简单介绍一下应该如何入门强化学习,并以开源代码为例详解强化学习实战。
Mac M系列芯片用户必看:UTM虚拟机跑麒麟V10安装达梦DM8全流程避坑指南
本文为Mac M系列芯片用户提供了一份详尽的UTM虚拟机安装麒麟V10并部署达梦数据库DM8的实战指南。文章深入分析了在ARM架构下选择UTM而非其他虚拟化方案的原因,并详细拆解了从系统安装、SPICE工具配置、麒麟V10深度调优到DM8安装与避坑的全流程,重点解决了ARM环境下的兼容性与配置难题,帮助开发者高效搭建国产化开发测试环境。
通过RestTemplate调用参数为MultipartFile的接口上传文件 + 踩坑
通过RestTemplate调用参数为MultipartFile的接口上传文件 + 踩坑
企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程
本文详细解析了企业微信群机器人的Webhook配置全流程,从创建机器人、获取关键Webhook地址,到使用代码发送文本、Markdown等多种消息类型。内容涵盖安全加固、错误处理及与CI/CD等系统集成的实战指南,帮助企业快速构建高效、稳定的内部通知系统。
RestTemplate直接发送内存文件对象multipart
然后,构建一个由字节数组和其他信息(如原始文件名和媒体类型)组成的资源对象,用于作为 HTTP 请求的一部分。
微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题
微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题
1、 快速掌握R:初学者的计量经济学指南
本博文旨在为初学者提供一个快速掌握R语言的指南,特别是针对计量经济学领域的应用。内容涵盖了R的基本操作、数据管理、可视化、函数编写以及高级统计分析方法,如OLS回归、异方差修正和集群标准误差计算等。通过实际示例和详细说明,帮助读者在数据分析和科学研究中更加得心应手。
restTemplatepost转发接口 参数是MultipartFile
restTemplate 文件上传
芒果YOLOv12改进90:检测头篇之ShareSepHead:即插即用|原创新颖共享Sep检测头,更省参数量,更高效,打造新型YOLOv8检测器,精度高效涨点
芒果YOLOv12改进90:检测头篇之ShareSepHead:即插即用|原创新颖共享Sep检测头,更省参数量,更高效,打造新型YOLOv8检测器,精度高效涨点
Java-- 使用RestTemplate调用带有MultiPartFile的接口总结
自己琢磨加找资料,花了不少时间,话不多说上代码 把File转成MultiPartFile的操作 添加参数并请求接口 解决问题后请点赞加评论,谢谢
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
SIMATIC S7-1200, S7-1500 PID 控制[手册]
SIMATIC S7-1200, S7-1500 PID 控制[手册]
Spirng restTemplate发送 MultipartFile 文件调用接口
public JSONObject upload(MultipartFile file){ try { log.info("上传图片证明材料"); HashMap<String, Object> map = new HashMap<>(); map.put("file",file); ByteArrayResource fileAsResource = new ByteArrayResource(file.get
复分析 阿尔福斯(Ahlfors) 第三版答案 英文
答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案
使用RestTemplate上传MultipartFile文件给远程接口
参考于:https://blog.youkuaiyun.com/weixin_30357231/article/details/97925465 方法头: public AjaxJson fileUpload(@RequestPart(value = "file") MultipartFile file) throws Exception MultiValueMap request = new LinkedMultiValueMap(1); ByteArrayResourc
ssm框架搭建
这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载
RestTemplate转发MultipartFile
RestTemplate转发MultipartFile文件
RestTemplate远程调用之传输文件
Spring RestTemplate远程调用之传输文件
使用RestTemplate上传文件
写作目的 最近维护一个项目,里面用了RestTemplate进行服务之前的调用,不过最近有一个Excel解析的需求,百度了几篇,内容不是很全,所以写篇博客记录一下,不过我还是推荐使用Feign调用,毕竟面向接口编程,方便。 代码 亲测可用 @RestController public class DataExcelImportController { private static final String REST_URL_PRFIX = "http://abc"; @Aut
使用RestTemplate调用上传文件且带参数的远程接口
根据对接的需要,需要请求一个使用 SSM 框架编写的文件上传的接口,该接口的请求方式为Post请求,请求参数全部是以 form-data 表单形式进行提交,包含多个参数,且方法中,文件是由 request 中获取到。
restTemplate 上传大文件Java heap space
将已上传的文件,通过RestTemplate,发起HTTP请求调用接口。当文件较大时,出现Java heap space。
restTemplate发送multipartFile和String混合参数及接收
【代码】restTemplate发送multipartFile和String混合参数及接收。
文件上传遇到的问题
1 此上传操作要调用第三方接口,使用RestTemplet调用 2 前端传来的文件与要用MultipartFile接收 3 调用操作要传递请求报文,封装请求头和请求体 4 请求头的contenttype类型要和form表单enctype一致,为mulpart form data 5 请求体的参数不能用HashMap封装,要用MultiValueMap 5 MultipartFile和File类型都不能作为请求参数传递,要用FileSystemResource ...
spring boot 服务间传输Docker镜像,并加载镜像
springboot服务间接口调用很简单,但是关于调用接口上传文件经常走弯路,故此总结一下: 负责上传文件的服务A(): @RequestMapping(value="/loadToRepository", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Object loadImageToRepository (@Req...
Java调用第三方http-文件发送接收4
【代码】Java调用第三方http-文件发送接收4。
Springboot实现上传文件,并实现调用第三方接口post请求多文件上传文件
项目过程中,经常会有和第三方接口打交道的过程,今天实现调用第三方上传文件的接口!!通常拿到第三方的接口文档的时候,不是第一时间先写代码,而是详细阅读接口文档。若接口需要第三方提供的基本参数,例如signkey, secrect等,也可以是其他的,查看文档里是否提供。再用工具(postman、swagger)构建接口请求参数进行接口测试,测试成功后, 再开始写代码!!
7921



被折叠的 条评论
为什么被折叠?



