我正在尝试使用 post 方法将文件上传到外部服务。
//final InputStream data = .... some imput stream;
HttpHeaders headers = new HttpHeaders();
headers.add(AUTHORIZATION_HEADER, String.format(AUTH_TOKEN_HEADER, "my-service-token"));
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
LinkedMultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
map.add("data", new MultipartInputStreamFileResource(data, fileName));
HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = new HttpEntity<>(map, headers);
return getRestTemplate().postForObject("https://external-service/", requestEntity, MyResponse.class);
但是,我收到以下错误,老实说我找不到任何相关内容。
org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://external-service/": Stream is closed; nested exception is java.io.IOException: Stream is closed
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:744)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:414)
注:
Spring-web:5.1.6.RELEASE
我无法发表评论,因此将其添加为答案,您可能会在读取流之前关闭该流。你能分享一下你是如何读取InputStream的吗?