Ionic Zip 密码设置在 azure blob 存储中,并为 zip 文件夹而不是文件设置最佳压缩
Posted
技术标签:
【中文标题】Ionic Zip 密码设置在 azure blob 存储中,并为 zip 文件夹而不是文件设置最佳压缩【英文标题】:Ionic Zip password set in azure blob storage and set best compression for zip folder not files 【发布时间】:2017-06-01 07:26:17 【问题描述】:如何设置 zip 文件夹的最佳压缩并为 Zip 文件夹设置密码,我使用的代码很少,请帮助我如何为 zip 文件夹设置最佳压缩和密码。
using (var zipStream = new MemoryStream())
zipFile.Save(zipStream);
zipStream.Seek(0, SeekOrigin.Begin);
CloudBlockBlob cblob = container.GetBlockBlobReference("MockTestZip/MT-" + this.mockExamId + ".zip");
cblob.UploadFromStream(zipStream);
我刚刚在其中添加了这两行,但密码未设置在 azure blob 存储的 zip 文件夹中
zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zipFile.Password = "encrypt";
【问题讨论】:
【参考方案1】:根据您的描述,我利用DotNetZip version 1.10.1 来测试我这边的这个问题。这里是关于ZipFile
中的Password
属性的备注:
在编写 zip 存档时,此密码应用于条目,而不是 zip 存档本身。它适用于随后添加到 ZipFile 的任何 ZipEntry, 使用 AddFile、AddDirectory、AddEntry 或 AddItem 方法等之一。
根据您的情况,我假设您可以将文件存储在没有密码的 zip 文件中,然后将 zip 文件存储在第二个带密码的外部 zip 文件中,如下所示:
using (ZipFile zipFile = new ZipFile())
zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zipFile.Password = "your-password";
zipFile.AddFile(@"inner.zip",""); //Passing the empty string ("") to store your zip file at the root path within the archive.
using (var zipStream = new MemoryStream())
zipFile.Save(zipStream);
zipStream.Seek(0, SeekOrigin.Begin);
CloudBlockBlob cblob = container.GetBlockBlobReference("MockTestZip/MT-" + this.mockExamId + ".zip");
cblob.UploadFromStream(zipStream);
【讨论】:
以上是关于Ionic Zip 密码设置在 azure blob 存储中,并为 zip 文件夹而不是文件设置最佳压缩的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 Python 中的 Flask 传递内存中的 Azure Blob
使用 Ionic 创建大型多部分 zip 失败并出现 OutOfMemoryException