从azure Storage c#下载Zip文件

问题描述 投票:0回答:1

我正在遍历数据库中的文件名和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");

        }
azure azure-storage-blobs zipoutputstream
1个回答
0
投票

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

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

等待blob.DownloadToStreamAsync(zipOutputStream);

© www.soinside.com 2019 - 2024. All rights reserved.