2

DotNetZip を使用する場合、Save(stream) を呼び出す前に、最終的な zip ファイルのサイズを取得できますか? ユーザーがかなり大きな zip ファイル (2 GB 以上) をダウンロードする Web サイトがあり、ファイル全体をメモリにバッファリングするのではなく、ユーザーにファイルをストリーミングできるようにしたいと考えています。このようなもの...

response.BufferOutput = false;
response.AddHeader("Content-Length", ????);

これは可能ですか?

4

2 に答える 2

3

ストリームが均質である場合、「小さな」部分を先に圧縮し、圧縮率を計算し、そこから外挿することで、時間を無駄にする可能性があります。

content-length ヘッダーなどを設定する場合は、次の場合にのみ実行できます (1) 一時ファイルを書き込む (接続に問題が発生し、クライアントが特定のチャンクを要求するリスクがある場合に推奨) (2)ファイル全体をメモリに保持できます(おそらく、大量のメモリを備えた64ビットシステムのみ)

もちろん、膨大なリソースを無駄にしてストリームを 2 回圧縮することもできますが、それはばかげていることに同意していただければ幸いです。

于 2011-03-23T09:57:53.760 に答える
1

必要なことを行う方法は、ファイルを一時ファイルシステム ファイルに保存し、結果をユーザーにストリーミングすることです。これにより、サイズを計算してからファイルを送信できます。

この場合、dotnetzip はファイルをメモリに保存しません。

于 2011-03-28T22:19:50.713 に答える