如何在Azure Blob存储中解压缩自解压Zip文件



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

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存储中获取提取的文件。

以下是对我有效的解决方案之一。我使用的不是7Zip,而是ZipArchive。

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 Function v2 自动解压缩文件

相关内容

  • 没有找到相关文章

最新更新