2

DotNetZip 1.9 を使用して、Asp.Net MVC 3 でアップロードされた zip ファイルを読み取ろうとしています。受け取った HttpPostedFileBase オブジェクトが問題ないことは既に確認済みです。ディスクに保存してから解凍できます。ただし、メモリから直接解凍できるはずなので、最初にディスクに保存するのは無駄に思えました。

MSDN から、HttpPostedFileBase.InputStream プロパティは「アップロードされたファイルを指す Stream オブジェクトを取得して、ファイルの内容を読み取る準備をします」。

DetNetZip のリファレンスによると、ZipFile.Read() は Stream オブジェクトを受け入れることができます。だから私はそれを試してみました.DotNetZipはBadReadExceptionをスローします. 問題を示すスクリーンショットを添付しました。

HttpInputStream からの解凍の問題 HttpInputStream からの解凍の問題

InputStream の値、長さはアップロードされた zip ファイルの値と一致します InputStream の値、長さはアップロードされた zip ファイルの値と一致します

誰か助けて?どうも

4

1 に答える 1

9

メソッドZipFile.IsZipFile呼び出しによって位置が進んだのInputStreamではないかと思います。後で読み込もうとすると、ストリームの位置が移動したため、有効な zip ファイルではなくなりました。貼ってみて

fileData.InputStream.Position = 0;

usingストリームが有効な zip ファイルであることを確認した直後、それを読み取ろうとする節の直前。これにより、ストリームの位置が最初にリセットされます。

于 2012-02-07T00:17:21.560 に答える