RestTemplate如何实现文件上传呢?
下文笔者讲述RestTemplate实现文件上传的方法及示例分享,如下所示
RestTemplate上传示例1
public String uploadFile(File file) { // 1.封装请求头 HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("multipart/form-data"); headers.setContentType(type); headers.setContentLength(file.length()); headers.setContentDispositionFormData("media", file.getName()); // 2.封装请求体 MultiValueMap<String, Object> param = new LinkedMultiValueMap<>(); FileSystemResource resource = new FileSystemResource(file); param.add("file", resource); // 3.封装整个请求报文 HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(param, headers); // 4.发送请求 ResponseEntity<String> data = restTemplate.postForEntity(tempMaterialUploadUrl, formEntity, String.class); // 5.请求结果处理 JSONObject weChatResult = JSONObject.parseObject(data.getBody()); return weChatResult; }
上传文件InputStream流
public String uploadInputStream(InputStream inputStream,String fileName,long cententLength) { // 1、封装请求头 HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("multipart/form-data"); headers.setContentType(type); headers.setContentDispositionFormData("media", fileName); // 2、封装请求体 MultiValueMap<String, Object> param = new LinkedMultiValueMap<>(); InputStreamResource resource = new InputStreamResource(inputStream){ @Override public long contentLength(){ return cententLength; } @Override public String getFilename(){ return fileName; } }; param.add("file", resource); // 3、封装整个请求报文 HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(param, headers); // 4、发送请求 ResponseEntity<String> data = restTemplate.postForEntity(tempMaterialUploadUrl, formEntity, String.class); // 5、请求结果处理 JSONObject weChatResult = JSONObject.parseObject(data.getBody()); // 6、返回结果 return weChatResult; }
上传MultipartFile类型文件
public String uploadFileWithInputStream(MultipartFile file) throws IOException { // 1、封装请求头 HttpHeaders headers = new HttpHeaders(); MediaType type = MediaType.parseMediaType("multipart/form-data"); headers.setContentType(type); headers.setContentLength(file.getSize()); headers.setContentDispositionFormData("media", file.getOriginalFilename()); // 2、封装请求体 MultiValueMap<String, Object> param = new LinkedMultiValueMap<>(); // 将multipartFile转换成byte资源进行传输 ByteArrayResource resource = new ByteArrayResource(file.getBytes()) { @Override public String getFilename() { return file.getOriginalFilename(); } }; param.add("file", resource); // 3、封装整个请求报文 HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(param, headers); // 4、发送请求 ResponseEntity<String> data = restTemplate.postForEntity(tempMaterialUploadUrl, formEntity, String.class); // 5、请求结果处理 JSONObject weChatResult = JSONObject.parseObject(data.getBody()); // 6、返回结果 return weChatResult; }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。