如何在 Azure 中动态创建 Ziparchive

How can I dynamically create Ziparchive in Azure

我的 Azure 存储帐户中有多个文件,比如它的主容器,我创建了一个动态容器,其中将从主容器复制所需的文件,并且需要将那些已处理的文件压缩到该创建的容器中。请参阅下面的代码,我在其中创建了 zip 存档。也正在创建 zip 存档,但是当我手动下载并查看文件时,它似乎已损坏(例如,单个文件的实际大小超过 1Mb,但我下载后得到的文件似乎是 22Kb),并且文件格式为 .ipt、.iam(Autodesk Inventor 文件)

CloudBlobContainer destContainer = blobClient.GetContainerReference(AzureContainer);
            bool isCreated = destContainer.CreateIfNotExists();
            var zipblob = destContainer.GetBlockBlobReference("inputAssembly.zip");
            using (var stream = await zipblob.OpenWriteAsync())
            using (var zip = new ZipArchive(stream, ZipArchiveMode.Create))
            {
                foreach (var fileName in inputfile)
                {
                    using (var fileStream = new MemoryStream())
                    {
                        if (destContainer.GetBlockBlobReference(fileName).Exists())
                        {
                            destContainer.GetBlockBlobReference(fileName).DownloadToStream(fileStream);
                        }
                        var newZip = new ZipArchive(fileStream, ZipArchiveMode.Create);
                        var entry = newZip.CreateEntry(fileName, CompressionLevel.NoCompression);
                        using (var innerFile = entry.Open())
                        {
                            fileStream.CopyTo(innerFile);
                        }
                        fileStream.Close();
                    }
                }
            }
        
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference(fixedpartContainer);
        CloudBlobContainer destContainer1 = blobClient.GetContainerReference(AzureContainer);
        bool isCreated = destContainer1.CreateIfNotExists();
        var zipblob = destContainer1.GetBlockBlobReference("inputAssembly.zip");
        using (var stream = await zipblob.OpenWriteAsync())
        {
            using (var zipArchive = new ZipArchive(stream, ZipArchiveMode.Create))
            {
                foreach (var blobName in blobFileNames)
                {
                    var blob = destContainer.GetBlockBlobClient(blobName);
                    var zipEntry = zipArchive.CreateEntry(blobName);
                    using var zipStream = zipEntry.Open();
                    using var fileStream = new MemoryStream();
                    await blob.DownloadToAsync(fileStream);
                    await zipStream.WriteAsync(fileStream.ToArray());
                    AssemblyCreated = true;

                }
            }
        }