0

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

    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();
4

3 回答 3

1

你没有。原因:

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

于 2012-09-13T06:34:39.647 回答
0

你应该看看 fin.Position

于 2012-09-13T06:30:02.790 回答
0

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

于 2012-09-13T06:36:54.083 回答