我正在尝试将整个 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();
更多细节
我正在从 azure blob 下载一个文件夹 ."myFolder" 及其内容作为 zip 文件,例如 myfolders.zip。
这是“myFolder”/azure blob 中的文件结构
我的文件夹/mymusic/test.mp3
我的文件夹/mytext/newtext.txt
我的文件夹/MyZipfiles/myzip.zip
我在上面发布的代码将生成文件夹的所有内容以创建“MyFolder.zip”并自动下载。现在如果您解压缩“MyFolder.zip”文件,由于某种原因,myzip.zip 已损坏.如果我尝试打开 myzip.zip 文件,它会显示一条消息“windows 无法打开文件夹,压缩的压缩文件夹“myzip.zip”无效”
请帮我找到一个解决方案,这样 .zip 文件就不会被损坏
我尝试下载到流媒体,但结果相同。,内部 zip 文件已损坏。所有其他文件类型都处于良好状态。zipOutputStream.PutNextEntry(entryName); destBlob.DownloadToStream(zipOutputStream);