【问题标题】:Calculating Compressed Filesize from GZIPOutputStream从 GZIPOutputStream 计算压缩文件大小
【发布时间】:2023-11-17 14:28:01
【问题描述】:

我正在压缩文件并将其写入输出流,如何获取压缩文件大小以放入响应头

    os = response.getOutputStream();
    gzos = new GZIPOutputStream(os);
    fin = new FileInputStream(file);
    in = new BufferedInputStream(fin);

    byte[] buffer = new byte[1024];
    int i;
    while ((i = in.read(buffer)) >= 0) {
           gzos.write(buffer, 0, i);
     }
    gzos.flush();

【问题讨论】:

    标签: java gzipoutputstream


    【解决方案1】:

    你没有。原因:

    response 将在响应缓冲区满后提交,也就是说,如果你正在 gzip 一个 20MB 的大文件,在 gzip 完成之前,header 已经发送到客户端,并且 gzip 完成时你不能修改提交的 header。

    【讨论】:

      【解决方案2】:

      你应该看看 fin.Position

      【讨论】:

        【解决方案3】:

        你没有。理由:你不必。 servlet 容器会为您处理它。

        【讨论】:

        • 我没有在响应标头中找到任何内容长度。我想在 android 中显示进度条,以便在下载时需要内容长度。没有内容长度是否可能。
        最近更新 更多