ここでは、 dotnetzipを使用して Azure BLOB ディレクトリの内容を圧縮しようとしています。
これを行うために使用するコードは次のとおりです。zip ファイルは作成されていますが、破損しています。私のブロブ コンテナー 'myfiles' で、zip ファイル内の同じフォルダー構造を保持しながら、myMusic フォルダー内のすべてのファイルとフォルダーを読み取ることによって、"mymusic.zip" という名前の zip ファイルを作成したいと考えています。次のコードは zip ファイルを作成しますが、zip ファイルが破損しています。これを解決するための提案はありますか?
string ofurl = @"http://myxyzstorage.blob.core.windows.net/myfiles/mymusic";
string ofBlob = @"http://myxyzstorage.blob.core.windows.net/myfiles";
dBlob = new CloudBlob(blobClient.GetBlobReference(ofBlob));
using (var zipFile = new ZipFile())
{
byte[] fileBytes = dBlob.DownloadByteArray();
using (var fileStream = new MemoryStream(fileBytes))
{
fileStream.Seek(0, SeekOrigin.Begin);
zipFile.AddEntry("myZipFiles"+".zip", fileBytes); }
var sas = ofContainer.GetSharedAccessSignature(new SharedAccessPolicy()
{
Permissions = SharedAccessPermissions.Write,
// SharedAccessExpiryTime = DateTime.UtcNow.AddSeconds(this.timeOutSeconds)
});
using (var zipStream = new MemoryStream())
{
zipFile.Save(zipStream);
zipStream.Seek(0, SeekOrigin.Begin);
var blobRef = ofContainer.GetBlobReference(ofurl);
blobRef.UploadFromStream(zipStream);
}
}
ここで上記のコードを使用すると、生成された zip ファイル myzipfile.zip がブロブ内に表示されます ( http://myxyzstorage.blob.core.windows.net/myfiles/mymusic )。しかし、ダウンロードして解凍しようとすると、表示されますエラー メッセージ "圧縮された zip フォルダー "myzipfiles.zip" は無効です。zip ファイルが壊れているのはなぜですか? zip ファイルが壊れないようにする方法