首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解压缩Azure Blob存储中的自解压缩Zip文件?

如何解压缩Azure Blob存储中的自解压缩Zip文件?
EN

Stack Overflow用户
提问于 2022-01-24 15:41:31
回答 1查看 400关注 0票数 0

我有一个压缩文件(.Exe-自解压压缩文件),可以使用7zip解压。由于我想使提取过程自动化,我使用了下面的C#代码。它适用于普通的7z文件。但面对这个问题,当我试图提取特定的自解压缩(.Exe)压缩文件时,“无法访问封闭的流”。菲伊。手动确保7zip命令行版本正在解压缩文件。

代码语言:javascript
复制
using (SevenZipExtractor extract = new SevenZipExtractor(zipFileMemoryStream))
    {
        foreach (ArchiveFileInfo archiveFileInfo in extract.ArchiveFileData)
        {
            if (!archiveFileInfo.IsDirectory)
            {
                using (var memory = new MemoryStream())
                {
                    string shortFileName = Path.GetFileName(archiveFileInfo.FileName);
                    extract.ExtractFile(archiveFileInfo.Index, memory);
                    byte[] content = memory.ToArray();
                    file = new MemoryStream(content);
                }
            }
        }
    }

zip文件位于Azure blob存储器中。我不知道如何在blob存储中获取提取的文件。

EN

Stack Overflow用户

回答已采纳

发布于 2022-01-25 11:37:27

这里有一个对我有用的解决办法。我没有使用7 7Zip,而是使用了ZipArchive。

代码语言:javascript
复制
ZipArchive archive = new ZipArchive(myBlob);
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(destinationStorage);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(destinationContainer);

foreach(ZipArchiveEntry entry in archive.Entries) {
  log.LogInformation($"Now processing {entry.FullName}");

  string valideName = Regex.Replace(entry.Name, @ "[^a-zA-Z0-9\-]", "-").ToLower();

  CloudBlockBlob blockBlob = container.GetBlockBlobReference(valideName);
  using(var fileStream = entry.Open()) {
    await blockBlob.UploadFromStreamAsync(fileStream);
  }
}

参考: 如何使用Azure函数v2自动解压缩文件

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70836475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档