Я пытаюсь разработать API, чтобы открыть файл, как слово или PDF.
Я тестирую с помощью Swagger этот API, но у меня есть ошибка ниже.
Параметр, заданный swagger или front, похож на этот -> Z: \ Some \ Path \ To \ My \ File.docx .
Я пробовал этот путь к файлу на окнах explorateur, и он работает нормально.
STACK TRACE
java.io.FileNotFoundException: InputStream resource [resource loaded through InputStream] cannot be resolved to absolute file path
at org.springframework.core.io.AbstractResource.getFile(AbstractResource.java:114) ~[spring-core-4.3.12.RELEASE.jar:4.3.12.RELEASE]
at ... .DownloadDocumentResource.downloadFile(DownloadDocumentResource.java:28) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_92]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_92]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-4.3.11.RELEASE.jar:4.3.11.RELEASE]
КОНТРОЛЛЕР ОТДЫХА
@RestController
public class DownloadDocumentResource {
@ResponseBody
@RequestMapping(method = RequestMethod.POST, path = {"/download"})
public ResponseEntity<InputStreamResource> downloadFile(@RequestBody String pathFile) throws IOException {
out.println(pathFile);
InputStreamResource resource = new InputStreamResource(new FileInputStream( pathFile));
File fileToDownload = resource.getFile();
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + fileToDownload.getName())
.contentLength(fileToDownload.length())
.contentType(MediaType.parseMediaType(MediaType.APPLICATION_OCTET_STREAM_VALUE))
.body(resource);
}