4

1つ以上のファイルで構成されるGZipStreamを返すサービスを作成する必要があります。ファイルの数は数百になる可能性があり、各ファイルは500MBを超える可能性があります。

ストリームが転送されているときに、ファイルをgzipstreamに動的に追加することはどういうわけか可能ですか?(ファイルをストリームにコピーする必要があるときにメモリ不足の例外が発生しないようにするため)

等:

  1. fileAを返されるストリームにコピーします。
  2. クライアントはストリームの読み取りを開始します。
  3. fileAが読み取られたら(クライアント側)、fileBをストリームにコピーします(サーバー側)。
  4. クライアントは引き続きストリームを読み取ります。

...ファイルがなくなるまで続きます。

ところで。ファイルを圧縮することは重要ではありません。クライアントが1つのファイルをダウンロードするだけで済むように、ファイルをzipファイルに結合するだけです。

したがって、私の目標は、サーバー上ですべてのファイルを一度に処理することなく、複数のファイルを1つのファイルとしてクライアントにストリーミングすることです(すべてのファイルがメモリにロードされないようにして、メモリ不足の例外を発生させるため)。

どういうわけかカスタムストリームを作成することでこれを行うことができますか、それとももっと簡単な方法がありますか?

ありがとう。

4

1 に答える 1

1

ファイルをディスク上の 1 つの zip ファイルに結合してから、そのファイルをストリーミングして戻すことができます。

ファイルをzipファイルに結合する方法については、次を参照してください。

これにより、メモリ不足の問題は解決されますが、多くのディスク領域が必要になります。

于 2012-10-19T21:56:19.700 に答える