Я пытался использовать шаблон rest, он работает нормально, а также пытался загрузить файл через почтальона.
В почтальоне все работает правильно без заголовков. С заголовками в почтальоне это не работает.
То же самое, когда я копируюсь в openfeign, удаляя заголовки. теперь ошибка изменилась. Текущий файл не является Multiform eoor.
OpenFeignClient:
@PostMapping(value = "/api/secured/save/details", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@Headers("multipart/form-data")
public ResponseEntity<Upload> uploadFile(@RequestHeader("X-Authorization-Firebase") String xAuth,
@RequestParam(value = "file", required = true) MultipartFile file, @RequestParam String path,
@RequestParam String fileName, @RequestParam String documentType, @RequestParam String explanation,
@RequestParam boolean authorityOnly);
Контроллер
@PostMapping("/save/details")
public ResponseEntity<Upload> handleFileUpload(@RequestHeader("X-Authorization-Firebase") String xAuth,@RequestParam("file") MultipartFile file, @RequestParam String path, @RequestParam String fileName) {
if (dataroomService.hasAccess(xAuth, path)) {
try {
Upload upload = dataroomService.saveFile(xAuth, file, path,fileName,explanation, documentType,authorityOnly);
return ResponseEntity.accepted().body(upload);
} catch (IOException e) {
LOG.error("Failed to upload file on S3: {}", e.getMessage());
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null);
}
} else {
LOG.info(ACCESS_DENIED);
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body(null);
}
}
Загруженный код:
String xAuth = ""jsonToken";
FileItem fileItem = new DiskFileItem("file", Files.probeContentType(file.toPath()), false, file.getName(),(int) file.length(), file.getParentFile());
InputStream input = new FileInputStream(file);
OutputStream os = fileItem.getOutputStream();
IOUtils.copy(input, os);
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
dataroomClient.uploadFile(xAuth,file,path,fileName,documentType,explanation,true);
Ошибка у меня
> ERROR 9934 --- [nio-8748-exec-9]
> o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for
> servlet [dispatcherServlet] in context with path [] threw exception
> [Request processing failed; nested exception is
> org.springframework.web.multipart.MultipartException: Failed to parse
> multipart servlet request; nested exception is java.io.IOException:
> org.apache.tomcat.util.http.fileupload.FileUploadException: the
> request was rejected because no multipart boundary was found] with
> root cause
>
> org.apache.tomcat.util.http.fileupload.FileUploadException: the
> request was rejected because no multipart boundary was found at
> org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:834)
> ~[tomcat-embed-core-9.0.27.jar:9.0.27]