如何在开箱前查看未压缩的大小
本文关键字:未压缩 | 更新日期: 2023-09-27 18:35:14
我正在使用DotNetZip提取来自外部(不可信)来源的zip文件。我的问题是zip文件本身可以是几千字节,但解压缩的内容可能会变成PB级。开箱前如何查看未压缩的尺寸?有没有可靠的方法来查看这一点并防止内存不足异常?
如下所述,可以使用离子zip完成:
using (ZipFile zip = ZipFile.Read(zipFile))
{
// Option 2 - will need to sift through the mass of info
info = zip.Info;
foreach (ZipEntry e in zip)
{
long uncompressedsize = e.UncompressedSize;
// Option 1
totaluncompressedsize += uncompressedsize;
}
}
但问题仍然存在:UncompressedSize
完全可靠吗?有人可以更改此信息以使其显示为较小的未压缩大小吗?
不,它并不完全可靠。 zip文件中的未压缩大小肯定可以被恶意来源更改。 您应该使用未压缩的大小来限制使用的内存,如果解压缩超过该大小,只需停止并拒绝 zip 文件即可。 切勿依赖输入来避免异常。
可以解码压缩条目并确定其未压缩的大小,而无需实际生成未压缩的输出。 但是,如果您无论如何都要解压,那就没有多大意义了。 解码几乎与解压缩一样长。 只需开始解压缩并在达到声称的未压缩大小时停止。
如何找到离子zip文件的未压缩大小 是一个类似的问题,可能会对您有所帮助。基本上,您遍历每个条目并将未压缩的大小相加。