我有一个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错误的解决方案?
我正在尝试使用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)