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

あなたはそうしない。理由:

応答バッファーがいっぱいになると、応答はコミットされます。つまり、20MB の大きなファイルを gzip する場合、ヘッダーは gzip が完了する前にクライアントに送信されており、gzip が終了したときにコミットされたヘッダーを変更することはできません。

于 2012-09-13T06:34:39.647 に答える
0

あなたはfin.Positionを見るべきです

于 2012-09-13T06:30:02.790 に答える
0

あなたはそうしない。理由: する必要はありません。サーブレットコンテナがそれを処理します。

于 2012-09-13T06:36:54.083 に答える