2014-10-06 76 views
1

在PHP中,你可以打开一个压缩资源无论是这样的:流充气包装?

$fp = fopen('compress.zlib://http://httpbin.org/gzip','rb') 

$fp = gzopen('http://httpbin.org/gzip','rb') 

我如何打开一个泄了气的资源? (如http://httpbin.org/deflate

N.B.我做不是想要将整个流读入内存,以便我可以运行gzinflate就可以了。

回答

1

您可以使用stream_filter_append在读取时应用充气过滤器。

$fp = fopen('http://httpbin.org/deflate','rb'); 
$params = array('level' => 6, 'window' => 15, 'memory' => 9); 
stream_filter_append($fp, 'zlib.inflate', STREAM_FILTER_READ, $params); 
print fread($fp,8192); 
+0

看起来像这样。尽管那些'$ params'对* read *有任何影响吗? – mpen 2014-10-06 17:23:08

+1

@标记虽然没有在文档中提到(http://php.net/manual/en/filters.compression.php),但它看起来像'window'是读取时唯一需要的参数 – FuzzyTree 2014-10-06 17:36:08

0

如提到的here,您可以使用gzopen的mode参数来精确的压缩模式。

+0

我无法让'gzopen'与'deflate'一起工作。你有一个例子吗? – mpen 2014-10-06 17:19:35