java - 在 Spring Boot 中发送文件

标签 java spring file

我正在创建在正文响应中发送文件的 spring boot 应用程序,对此我使用以下代码:

FileSystemResource pdfFile = new FileSystemResource(outputFile);

return ResponseEntity
       .ok()
       .contentLength(pdfFile.contentLength())
       .contentType(MediaType.parseMediaType("application/pdf"))
       .body(new ByteArrayResource(IOUtils.toByteArray(pdfFile.getInputStream())));

我想知道除了使用 FileSystemResource 之外是否还有其他发送文件的方法?

拜托,如果有任何建议,请不要犹豫。

谢谢!

最佳答案

这是我通常做法的简化版本,但它做的事情几乎是一样的:

@RequestMapping(method = RequestMethod.GET, value = "/{id}")
public ResponseEntity<byte[]> getPdf(@PathVariable Long id) throws IOException {
    final String filePath = pdfFilePathFinder.find(id);

    final byte[] pdfBytes = Files.readAllBytes(Paths.get(filePath));

    final HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.parseMediaType("application/pdf"));
    headers.setContentDispositionFormData("attachment", null);
    headers.setCacheControl("no-cache");

    return new ResponseEntity<>(pdfBytes, headers, HttpStatus.OK);
}

关于java - 在 Spring Boot 中发送文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55630863/

相关文章:

python - Python 中的字符串等价/比较

C 从文件中读取一行的一列

java - 从 Java 或 Groovy 运行 node-js

java - JTextPane 动态缩进!!!情况

java - Spring DevTools 未包含在 spring-boot-maven-plugin 打包的 fat jar 中

spring - 如何使 @Controller 映射路径可配置?

c++ - 打开错误文件的错误信息

java - 将私钥导入 keystore

java - 浏览器在 Java Web Start 上下载 jnlp。如何预防?

java - Spring with AspectJ compile-time weaving causing : java. lang.VerifyError: 非法使用非虚函数调用