azure - 从 azure Storage c# 下载 Zip 文件

标签 azure azure-blob-storage zipoutputstream

我正在循环访问数据库中的文件名以及 azure 存储中的同一文件。我正在压缩这 n 个文件并从 azure 存储下载。我将压缩文件保存到本地存储中。当我解压并想要查看文件时,它说已损坏/损坏。

public ActionResult Download(string productid, string YearActiveid)
        {
            HomePageModel homepagemodel = new HomePageModel();

            homepagemodel.ProdHeaderDetail = GetProductHeaderDetail(productid, YearActiveid);
            homepagemodel.PriorYearsActive = GetPriorYearActive(productid, YearActiveid);

            CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=<name>;AccountKey=<key>;EndpointSuffix=core.windows.net");
            CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
            CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("product");

            var blobFileNames = new string[] { "file1.png", "file2.png", "file3.png", "file4.png" };
            var outputMemStream = new MemoryStream();
            var zipOutputStream = new ZipOutputStream(outputMemStream);
                foreach (var ProdHeaderDetail in homepagemodel.ProdHeaderDetail)
                {
                    zipOutputStream.SetLevel(5);
                    var blob = cloudBlobContainer.GetBlockBlobReference(ProdHeaderDetail.FileName);
                    var entry = new ZipEntry(ProdHeaderDetail.FileName);
                    zipOutputStream.PutNextEntry(entry);
                    blob.DownloadToStreamAsync(zipOutputStream);
                }


                zipOutputStream.Finish();
            //zipOutputStream.Close();
            //zipOutputStream.CloseEntry();
            zipOutputStream.IsStreamOwner = false;
                 outputMemStream.Position = 0;
                return File(outputMemStream, "application/zip", "filename.zip");

        }

最佳答案

我通过添加异步和等待解决了该问题

公共(public)异步任务下载(字符串productid,字符串YearActiveid)

等待 blob.DownloadToStreamAsync(zipOutputStream);

关于azure - 从 azure Storage c# 下载 Zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62176614/

相关文章:

Java.util.zip 替换单个 zip 文件

java - 打开使用 java 创建的 zip 文件时出错

Java zip 程序生成损坏的 zip 文件

azure - 从 azure 函数应用检索主机 key

azure - 如何使用另一个二头肌模块文件中的 keyvault

c# - 延迟消息并维护传递计数 Azure 服务总线

json - 从 Azure 存储 Blob 获取 Json

java - 如何从 Azure Page Blob 中读取并发写入?

azure - 如何使用 Azure DevOps 将构建输出发布到网络共享

azure - 如何使用react和node js(服务器端)将更大的文件(200mb+)上传到blob存储?无需在服务器上保存文件