如何在windows和linux下使用spring框架在java中以流的形式返回文件

2ic8powd  于 2021-07-16  发布在  Java
关注(0)|答案(0)|浏览(372)

我正在使用spring框架用java开发restapi。其中一个端点是以流的形式返回文件,我编写了以下方法:

@GetMapping(value="/v2/document/{guid}/file", produces = {"*/*"})
    @ResponseBody
    public ResponseEntity<StreamingResponseBody> getFile(@PathVariable("guid") String guid) throws Exception {
        String fileName = FindFile(guid);
        Path path = Paths.get(Paths.get(FileSystemRepository.reportsDir).toString(), Paths.get(fileName).toString());
        StreamingResponseBody responseBody = outputStream -> {
            Files.copy(path, outputStream);
        };
        HttpHeaders responseHeaders = new HttpHeaders();
        responseHeaders.setContentType(MediaType.valueOf(Files.probeContentType(path)));
        return new ResponseEntity(responseBody, responseHeaders, HttpStatus.OK);
    }

当我构建项目并将其部署到windows上的tomcat服务器上时,它可以正常工作,并按预期下载文件。但是,当我将其托管在linux计算机上时,在尝试下载文件时出现以下错误:

我要获取的文件存在于我在方法中创建的路径中:

对发生的事有什么看法吗?我的日志工作不正常,但如果我得到它的工作,我会更新与相关的信息票。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题