【问题标题】:Download Zip file from azure Storage c#从 azure Storage c# 下载 Zip 文件
【发布时间】:2020-06-03 15:25:43
【问题描述】:

我正在循环浏览我的数据库中的文件名以及我在 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");

        }

【问题讨论】:

  • 仅供参考,您刚刚向全世界泄露了您的存储帐户凭据。请立即刷新您的存储帐户密钥。我从你的问题中编辑了它们,但任何有足够代表的人仍然可以看到原件。
  • 除此之外:请提供更多关于到底发生了什么的详细信息。否则,这个问题需要社区调试。对于您将原始内容放入 zip 文件的位置,我们一无所知。我们不知道任何其他细节,除了您无法创建具有零文件大小错误的 zip 文件。
  • 当我提取 zip 文件并尝试打开文件 (Adobe acrobat) 时,它说文件损坏/损坏
  • 对 - 我从你的原始描述中得到了这个。我建议添加有关您如何构建 zip 文件的更多详细信息。在这一点上有太多的未知数。请编辑您的问题以添加详细信息(请不要在 cmets 中添加详细信息)。
  • 另外:我不知道你为什么删除了我的编辑,在我修复了你的格式问题、编辑了你的连接凭据并删除了你描述中不需要的 ***** 字符之后。我已使您的问题格式正确且易于阅读。因此,我回滚了编辑。

标签: azure azure-blob-storage zipoutputstream


【解决方案1】:

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

公共异步任务下载(string productid, string YearActiveid)

等待 blob.DownloadToStreamAsync(zipOutputStream);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2018-01-09
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多