Я работаю над веб-API (с Spring Boot), который конвертирует pdf с использованием внешнего API C ++, эта программа работает, но когда я хочу отправить файл в ответе тела, я получаю эту ошибку:
{
"timestamp": "2019-04-10T09:56:01.696+0000",
"status": 500,
"error": "Internal Server Error",
"message": "file [D:\\[Phenix-Monitor]1.pdf] cannot be resolved in the file system for checking its content length",
"path": "/convert/toLinPDf"}
Контроллер:
@PostMapping("/toLinPDf")
public ResponseEntity<ByteArrayResource> convertion(@RequestParam(value = "input", required = false) String in,
@RequestParam(value = "output", required = false) String out) throws IOException, InterruptedException {
linearizeService.LinearizePDf(in, out);
FileSystemResource pdfFile = new FileSystemResource(out);
return ResponseEntity
.ok()
.contentLength(pdfFile.contentLength())
.contentType(
MediaType.parseMediaType("application/pdf"))
.body(new ByteArrayResource(IOUtils.toByteArray(pdfFile.getInputStream())));
}
Я предполагаю, что проблема в linearizeService.LinearizePDf(in, out);
, потому что в этом методе я использую внешний процесс, поэтому происходит то, что когда я пытаюсь открыть файл с FileSystemResource pdfFile = new FileSystemResource(out);
, linearizeService еще не завершил обработку вот почему я получаю эту ошибку, мой вопрос: как я могу справиться с этим, я имею в виду, как ждать создания файла, а затем отправить этот файл?