I am compressing File and writing it into outputstream, How to get the compressed file size to put in response header

    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();
有帮助吗?

解决方案

you don't. Reason:

response will be committed once response buffer is full, that is to say, if you are gzipping a 20MB large file, the header was already sent to client before gzip completes, and you can not modify the committed header when gzip finishes.

其他提示

You should Look at fin.Position

You don't. Reason: you don't have to. The servlet container takes care of it for you.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top