无法编写JSON:未找到类java.io.FileDescriptor的序列化程序,也未找到创建BeanSerializer的属性

Dha*_*anu 7 java rest post spring

我正在尝试使用Spring MultiPart文件上传使用Spring Rest模板(它接受发布,但不接受JSON)将https发布到站点。

收到以下错误时,

org.springframework.http.converter.HttpMessageNotWritableException:无法编写JSON:未找到类java.io.FileDescriptor的序列化程序,也未找到创建BeanSerializer的属性。

MultiValueMap<String, Object> formData = new LinkedMultiValueMap<String, Object>();
formData.add("NUMBER", "ABC");
formData.add("ID", "123");
formData.add("FILE",file); // this is spring multipart file
HttpHeaders headers = new HttpHeaders();
headers.set("Content-Type", "multipart/form-data"); 
headers.set("Accept", "text/plain"); 
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(formData, headers);
RestTemplate restTemplate = getRestTemplate();

String result  = restTemplate.postForObject(uploadUri, requestEntity, String.class);
Run Code Online (Sandbox Code Playgroud)

Tha*_*mar 6

我也遇到了同样的问题,当我使用 ByteArrayResource 而不是 FileSystem 资源时,我能够解决这个问题。我使用 ByteArrayResource 将多部分文件的字节内容复制到 httprequest 实体中。

Iterator<String> itr = request.getFileNames();
MultipartFile file = request.getFile(itr.next());
//Set the headers
................
formData .add("files", new ByteArrayResource(file.getBytes()));
Run Code Online (Sandbox Code Playgroud)

您可以参考此链接以获取更多信息