RestTemplate 通过 InputStreamResource 上传文件

我项目需要获取网络图片。然后再调用自己的上传接口上传文件。

RestTemplate restTemplate = new RestTemplate();
        URL url = new URL("http://uplogl9g5B9i95ygA07yIhFrgg8tBNA图片地址");
        try(InputStream in = url.openStream();) {
            InputStreamResource fileResource = new InputStreamResource(in) {
                @Override
                public long contentLength() throws IOException {
                    return in.available();
                }

                @Override
                public String getFilename() {
                    return UUID.randomUUID().toString().replaceAll("-", "").substring(0, 9) + ".jpg"; //随机一个假名字,也可以拆分url获取原来的名字。
                }
            };
            MultiValueMap dataMap = new LinkedMultiValueMap<>();
            dataMap.add("file", fileResource);// 添加文件到表单,根据你上传 接口需要。
            HttpHeaders requestHeaders = new HttpHeaders();
            requestHeaders.setContentType(MediaType.MULTIPART_FORM_DATA);
            HttpEntity> requestEntity = new HttpEntity>(dataMap, requestHeaders);
            ResponseEntity response = restTemplate.postForEntity("http://sta你的上传地址adfile/upload",
                    requestEntity, String.class);
            log.info("--------上传结果:{}", response);
        }

原文是获取ftp文件再上传。我这里是直接获取网上图片

你可能感兴趣的:(spring)