resttemplate怎么上传文件流

spring的resttemplate怎么上次文件流,我知道通过下面的方法上传文件:

MultiValueMap<String, Object> request = new LinkedMultiValueMap<>();
FileSystemResource resource = new FileSystemResource(file);
request.add("file", resource);

但如果我不是File对象呢,是InputStream,又该怎么上传? 希望有经验的朋友分享下。感激不尽。

阅读 25.6k
3 个回答

已搞定

@RequestMapping("upload")
    public String upload(HttpServletRequest request) throws IOException {
        System.out.println(request.getQueryString());
        byte[] bytes = StreamUtils.copyToByteArray(request.getInputStream());
        String str = new String(bytes);
        System.out.println(str);
        return str;
    }

    @RequestMapping("doit")
    public String doIt() {
        RestTemplate restTemplate = new RestTemplate();
        HttpHeaders headers = new HttpHeaders();
        headers.setAcceptCharset(Collections.singletonList(Charset.forName("UTF-8")));
        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
        HttpEntity<FileSystemResource> httpEntity = new HttpEntity<>(new FileSystemResource("D:\\个人文件\\Desktop\\aaa.md"), headers);
        Map<String, Object> params = new HashMap<>();
        params.put("1", 1);
        params.put("2", "ss");
        params.put("3", "aa");
        params.put("4", 5555);
        ResponseEntity<String> response = restTemplate.postForEntity("http://localhost:8585/upload", httpEntity, String.class, params);
        return response.getBody();
    }
新手上路,请多包涵
HttpHeaders headers = new HttpHeaders();
         headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
InputStream inputStream = null;
//下载文件
inputStream  = ftpUtil.downloadFIle(fileName);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] bytes = new byte[1024];
int temp;
while ((temp = inputStream.read(bytes)) != -1) {
byteArrayOutputStream.write(bytes, 0, temp);
}
//文件流转byte[]
byte[] by = byteArrayOutputStream.toByteArray();
String url = "http://xxxxx";
HttpEntity<byte[]> httpEntity = new HttpEntity<>(by, headers);
HttpEntity<String> result = restTemplate.exchange(url, HttpMethod.PUT, httpEntity, String.class);
log.info("--------上传结果:{}", result);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进