Post RestTemplate将图像上载为内容类型为image/jpg的多部分文件

Post RestTemplate将图像上载为内容类型为image/jpg的多部分文件,post,spring-boot,resttemplate,Post,Spring Boot,Resttemplate,我正在尝试使用RestTemplate将图像(多部分文件)上载到服务器URL。 邮递员的发送请求与内容类型:image/jpg和从Body以二进制文件形式发送的图像一起工作 SpringBoot中的方法实现: public ResponseEntity<String> uploadImage(MultipartFile file) { restTemplate.getMessageConverters().add(new ByteArrayHttpMessageConvert

我正在尝试使用RestTemplate将图像(多部分文件)上载到服务器URL。 邮递员的发送请求与
内容类型:image/jpg
和从Body以二进制文件形式发送的图像一起工作

SpringBoot中的方法实现:

public ResponseEntity<String> uploadImage(MultipartFile file) {
    restTemplate.getMessageConverters().add(new ByteArrayHttpMessageConverter());
    restTemplate.getMessageConverters().add(new BufferedImageHttpMessageConverter());

    LinkedMultiValueMap<String,Object> params = new LinkedMultiValueMap<>();
    params.add("file", new FileSystemResource(file));
    HttpHeaders httpHeaders = new HttpHeaders();
    httpHeaders.setContentType(MediaType.IMAGE_JPEG);
    HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, httpHeaders);

    return restTemplate.exchange(UPLOAD_URL, HttpMethod.POST, requestEntity, String.class);
上载与内容类型
MediaType一起工作。多部分表单数据
,但我使用的REST服务只接受
image/jpg
作为HTTP内容类型


谢谢。

您的远程服务接受
image/jpg
,因此您应该流式传输字节而不是多部分:

HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "image/jpeg");

Resource res = new InputStreamResource(file.getInputStream());

HttpEntity<Resource> entity = new HttpEntity<>(res, headers);
template.exchange(UPLOAD_URL, HttpMethod.POST, entity , String.class);
HttpHeaders=newhttpheaders();
headers.set(“内容类型”、“图像/jpeg”);
Resource res=新的InputStreamResource(file.getInputStream());
HttpEntity=新的HttpEntity(res、Header);
exchange(UPLOAD_URL,HttpMethod.POST,entity,String.class);

RestTemplate
具有
ResourceHttpMessageConverter
,可将您的多部分流式传输到服务中。

我现在收到此错误
没有用于org.springframework.core.io.InputStreamResource和内容类型“image/jpeg”
@Ron.Basco将
输入流资源
声明更改为
资源
。看我的edit@Ron.Basco您是否注册了
ResourceHttpMessageConverter
<代码>restTemplate.getMessageConverters().add(新资源HttpMessageConverter())我发现了问题。是因为我使用的是rest模板吗。rest模板正在重新编码的URL中有静态参数。
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "image/jpeg");

Resource res = new InputStreamResource(file.getInputStream());

HttpEntity<Resource> entity = new HttpEntity<>(res, headers);
template.exchange(UPLOAD_URL, HttpMethod.POST, entity , String.class);