Я пытаюсь преобразовать всю папку хранилища Azure blob и ее содержимое в zip-файл. Внутри этой папки у меня есть файлы разных типов, например, .txt, .mp3, .zip. Но как только папка преобразуется в zip-файл Я заметил, что все типы файлов .zip были повреждены. Как я могу предотвратить повреждение моих zip-файлов. Я использую библиотеку Ionic.Zip для создания zip-файлов.
Вот код, который я использую. Здесь я могу успешно сгенерировать и загрузить zip-файл со всеми другими типами файлов , кроме внутренних zip-файлов .
var allFiles = directory.ListBlobs(new BlobRequestOptions { UseFlatBlobListing = true }).Where(x => x.GetType() == typeof(CloudBlockBlob)).Cast<CloudBlob>();
string xyzblob = directory.Uri.ToString().TrimEnd('/');
var dBlob = blobClient.GetBlobReference(xyzblob);
byte[] fileBytes = null;
fileBytes = dBlob.DownloadByteArray();
foreach (var file in allFiles)
{
using (var fileStream = new MemoryStream(fileBytes))
{
var entryName = file.Uri.ToString().Replace(directory.Uri.ToString(), "");
zipOutputStream.PutNextEntry(entryName);
fileStream.Seek(0, SeekOrigin.Begin);
int count = fileStream.Read(fileBytes, 0, fileBytes.Length);
while (count > 0)
{
zipOutputStream.Write(fileBytes, 0, count);
count = fileStream.Read(fileBytes, 0, fileBytes.Length);
if (!Response.IsClientConnected)
{
break;
}
Response.Flush();
}
fileStream.Close();
}
}
zipOutputStream.Close();
Подробнее
Я загружаю папку "myFolder" и ее содержимое из Azure blob в виде zip-файла, например myfolders.zip.
Вот как файловая структура внутри "myFolder" / azure blob
MyFolder / mymusic / test.mp3
MyFolder / mytext / newtext.txt
MyFolder / MyZipfiles / myzip.zip
Мой код, который я разместил выше, сгенерирует zip все содержимое папки для создания «MyFolder.zip» и загрузится автоматически. Теперь, если вы разархивируете файл «MyFolder.zip», по какой-то причине myzip.zip будет поврежден .Если я пытаюсь открыть файл myzip.zip, отображается сообщение «Windows не может открыть папку, сжатая заархивированная папка« myzip.zip »недействительна»
Пожалуйста, помогите мне найти решение, чтобы файлы .zip не были повреждены
Я попытался загрузить в поток, но результаты те же., Внутренние zip-файлы повреждаются. Все остальные типы файлов в хорошем состоянии. zipOutputStream.PutNextEntry (entryName); destBlob.DownloadToStream (zipOutputStream);