获取zlib中未压缩数据的大小?

Ari*_*riX 5 php c compression size zlib

我正在创建包含各种文件上传服务的东西,我需要存储使用zlib的compress()函数压缩的数据.我通过互联网发送它已经压缩,但我需要知道远程服务器上未压缩的文件大小.有没有什么方法可以在没有首先解压缩()服务器上的数据的情况下找出这些信息,只是为了提高效率?这就是我现在正在做的事情,但如果有一条捷径,我很乐意接受它.

顺便问一下,为什么称它为uncompress?这对我来说听起来很可怕,我一直以为它会减压......

eha*_*ost 3

zlib 格式没有原始输入大小的字段,因此我怀疑您是否能够在不模拟数据解压缩的情况下做到这一点。gzip 格式有一个“输入大小”( ISIZE) 字段,您可以使用该字段,但您可能希望避免更改压缩格式或让客户端发送文件大小。

但即使您使用不同的格式,如果您不信任客户端,您仍然需要运行更昂贵的检查以确保未压缩数据的大小符合客户端所说的大小。在这种情况下,您可以做的是降低解压缩到/dev/null过程的成本,确保 zlib 不会将输出数据写入任何地方,因为您只想知道未压缩的大小。