Windowsのアズールでのエラーは、zipファイルをアップロードする場合:ヘッダーに「EOF「を持つZipExceptionが未処理されました」」

StackOverflow https://stackoverflow.com/questions/2547481

  •  23-09-2019
  •  | 
  •  

質問

私は、文書管理システムを作成するには、Windows Azureのを使用してきた、との事は今のところうまく行っています。私はasp.netのフロントエンドを通じてBLOBストレージにファイルをアップロードおよびダウンロードすることができました。

私は今何しようとしてることは、ユーザーが.zipファイルをアップロードし、その.zipファイルからファイルを取り、個々のファイルとして保存することができます。問題は、私は、ヘッダーで「EOF」「持つZipExceptionが未処理された」そうだと私はなぜか、です。

私は、他の多くのタスクとその加工した偉大なのために使用してきたICSharpCode.SharpZipLibライブラリを使用しています。

ここでは基本的なコードです

CloudBlob ZipFile = container.GetBlobReference(blobURI);
MemoryStream MemStream = new MemoryStream();
ZipFile.DownloadToStream(MemStream);
....
while ((theEntry = zipInput.GetNextEntry()) != null)

と、それは私がエラーを取得しながら、で始まっていることというの行にあります。私は十分な時間がによって行っていたことを確認するために10秒の睡眠時間を追加しました。

常にではないが、 MemStreamは、私はそれをデバッグする場合は、長さを持っていますが、zipInputは時々ありません。それは常に失敗します。

役に立ちましたか?

解決

ただ、ランダムな推測が、あなたは、あなたがそれを読む前に0にストリームバックを模索する必要がありますか?わからないあなたはすでにそれをやっている場合(またはそれが必要の場合)。

他のヒント

@Smarxヒントは、あまりにも私のためのトリックを行いました。 ZIP内の空のファイルを回避するための鍵は、ゼロに位置を設定することです。明確にするために、ここでブラウザへAzureのブロブを含むzipストリームを送信するサンプルコードです。

        var fs1 = new MemoryStream();
        Container.GetBlobReference(blobUri).DownloadToStream(fs1);
        fs1.Position = 0;

        var outputMemStream = new MemoryStream();
        var zipStream = new ZipOutputStream(outputMemStream);

        var entry1 = new ZipEntry(fileName);
        zipStream.PutNextEntry(entry1);
        StreamUtils.Copy(fs1, zipStream, new byte[4096]);
        zipStream.CloseEntry();

        zipStream.IsStreamOwner = false;    // False stops the Close also Closing the underlying stream.
        zipStream.Close();                  // Must finish the ZipOutputStream before using outputMemStream.

        outputMemStream.Position = 0;

        Response.Clear();
        Response.AddHeader("Content-Disposition", "attachment;filename=" + zipFileName);
        Response.OutputStream.Write(outputMemStream.ToArray(), 0, outputMemStream.ToArray().Length);
        Response.End();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top