ここで、dotnetzipを使用してディレクトリの内容を圧縮しようとしていますが、次のエラー メッセージが表示されます: URI 形式はサポートされていません。
これを行うために使用するコードは次のとおりです。
string strDirectoryName="http://zyx.blob.core.windows.net/myfiles/mymusic"
using (ZipFile zip = new ZipFile())
{
zip.AddDirectory(strDirectoryName);
zip.Comment = "This zip was created at " + System.DateTime.Now.ToString("G");
zip.Save("zipFileToCreate");
}
ここで同様の質問への回答を調べました。また、同じ URL 形式に従っているのに、なぜこのエラーが発生するのかを調べました。このエラーの解決を手伝ってください
上記のコードを次のように変更すると、zip ファイルが作成されますが、破損しています。私のブロブ コンテナー 'myfiles' で、zip ファイル内の同じフォルダー構造を保持しながら、myMusic フォルダー内のすべてのファイルとフォルダーを読み取ることによって、"mymusic.zip" という名前の zip ファイルを作成したいと考えています。次のコードは、zip ファイルを作成します。しかし、zipファイルが破損しています。これを解決するための提案はありますか?
string ofurl = @"http://myxyzstorage.blob.core.windows.net/myfiles/mymusic";
string ofBlob = @"http://myxyz.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(ofurl+".zip", fileBytes);
}
var sas = offlineContainer.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 ファイルが破損するのはなぜですか?