我正在开发一个Web API(使用弹簧启动),使用外部C++api转换pdf,该程序正在工作,但是当我想在正文响应中发送文件时,我收到此错误:
{
"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尚未完成处理,为什么我得到这个错误,我的问题是:我该如何处理这个问题,我的意思是如何等待文件被创建然后发送这个文件?linearizeService.LinearizePDf(in, out);FileSystemResource pdfFile = new FileSystemResource(out);
幕布斯6054654
相关分类