可能用到:
<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;
}