相关疑难解决方法(0)

如何使用RestTemplate转发大文件?

我有一个Web服务调用,通过它可以上传zip文件.然后将文件转发到另一个服务进行存储,解压缩等.现在文件存储在文件系统中,然后构建FileSystemResource.

Resource zipFile = new FileSystemResource(tempFile.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)

我可以使用ByteStreamResource以节省时间(在转发之前不需要在磁盘上保存文件)但是为此我需要构建一个字节数组.如果是大文件,我将收到"OutOfMemory:java heap space"错误.

ByteArrayResource r = new ByteArrayResource(inputStream.getBytes());
Run Code Online (Sandbox Code Playgroud)

任何使用RestTemplate转发文件而不会出现OutOfMemory错误的解决方案?

java groovy spring resttemplate

36
推荐指数
3
解决办法
3万
查看次数

使用Spring Rest模板+ Spring Web MVC进行多部分文件上载

我正在尝试使用RestTemplate上传一个文件,代码如下.

   MultiValueMap<String, Object> multipartMap = new LinkedMultiValueMap<>();
   multipartMap.add("file", new ClassPathResource(file));

   HttpHeaders headers = new HttpHeaders();
   headers.setContentType(new MediaType("multipart", "form-data"));

   HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<MultiValueMap<String, Object>>(multipartMap, headers);

   System.out.println("Request for File Upload : " + request);

   ResponseEntity<byte[]> result = template.get().exchange(
                    contextPath.get() + path, HttpMethod.POST, request,
                    byte[].class);
Run Code Online (Sandbox Code Playgroud)

我有MultipartResolverbean和Controller代码

@RequestMapping(value = "/{id}/image", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.NO_CONTENT)
@Transactional(rollbackFor = Exception.class)
public byte[] setImage(@PathVariable("id") Long userId,
        @RequestParam("file") MultipartFile file) throws IOException {
    // Upload logic
}
Run Code Online (Sandbox Code Playgroud)

我得到以下例外

 org.springframework.web.bind.MissingServletRequestParameterException: Required MultipartFile parameter 'file' is not …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc resttemplate

34
推荐指数
5
解决办法
10万
查看次数

标签 统计

java ×2

resttemplate ×2

spring ×2

groovy ×1

spring-mvc ×1