java - 使用 Spring Boot 提供 gzip 压缩文件

标签 java spring gzip httpresponse content-encoding

我正在尝试使用 Spring Boot REST 提供 gzip 压缩的日志文件。
文件已经被 gzip 压缩,我不需要 gzip 它们。
浏览器应该解压缩它们并显示纯文本。

根据我在谷歌上搜索到的信息,我需要两件事才能使其发挥作用:

  • 在请求 header 中设置以下内容:'Accept-Encoding': 'gzip'
  • 在响应 header 中设置以下内容:'Content-Encoding': 'gzip'

请求正常:

Request Headers - Accept-Encoding

响应不是 - 缺少内容编码 header : Response Headers

这是我的 Java 代码:

@RequestMapping(value = "/download",
                method = RequestMethod.GET)
public ResponseEntity<InputStreamResource> download(HttpServletRequest request, HttpServletResponse response) {
    log.debug("REST request to get the filesystem resource");

    // hardcoded for testing purpose
    File f = new File("C:/file.log.gz");
    InputStream inputStream = null;
    InputStreamResource inputStreamResource = null;
    HttpHeaders headers = null;
    try {
        inputStream = new FileInputStream(f);
        inputStreamResource = new InputStreamResource(inputStream);

        headers = new HttpHeaders();
        headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
        headers.add("Pragma", "no-cache");
        headers.add("Expires", "0");
        headers.add("Content-Encoding", "gzip");

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    return ResponseEntity
        .ok()
        .headers(headers)
        .contentType(MediaType.parseMediaType("text/plain"))
        .body(inputStreamResource);
}

Spring 是否从响应中删除此特定 header ?

最佳答案

我刚刚发现它确实有效:)。我之前使用过 BrowserSync 来测试它,但由于某种原因它不能与 BrowserSync 一起使用。

关于java - 使用 Spring Boot 提供 gzip 压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905839/

相关文章:

java - 搜索 JSON 对象时如何忽略大小写

java - 为什么 List 接口(interface)的 lastIndexOf() 方法接受 Object 作为参数而不是 E?

java - Bean 定义是抽象的 独立 Java 应用程序上的错误

javascript - 使用 gzip 压缩 JavaScript

javascript - Magento 中合并 CSS/JS 文件的 Gzip

java - Java 中 PHP 的 gzuncompress 函数?

java - boolean 值不会从 true 返回 false

java - 是否有一个 java.util.concurrent 类允许定期启动线程而不阻塞完成?

java - Azure 上的 Spring 和 Azure Spring Cloud 之间的区别

node.js - Spring Cloud Netflix Eureka 找不到 eureka-js 实例