resttemplate怎么上传文件流

发布于 2022-09-11 21:58:23 字数 307 浏览 34 评论 0

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

居里长安 2022-09-18 21:58:23

已搞定

@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();
    }
随波逐流 2022-09-18 21:58:23
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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文