2014-10-06 89 views
0

您可以打开这样的gzip压缩的HTTP资源:添加到包装已打开流

$file = 'compress.zlib://http://www.example.com/myarchive.gz'; 
$fp = fopen($file, 'rb'); 

但是假如你不知道一个资源gzip压缩,直到你打开后,用stream_get_meta_data,如何获取其元数据您是否已经在fopen'd资源之后添加compress.zlib

+1

是['gzopen()'](http://php.net/manual/en/function.gzopen.php)不是,你可以使用一个替代? – Darren 2014-10-06 03:48:15

+0

@Darren不,我实际上将相当多的选项传递给fopen(上下文)的第4个参数,gzopen不支持。并不是说它有很大的区别;我认为'compress.zlib://'或多或少等同于'gzopen'。这两个实际*做*工作在非压缩文件,但它不是*只是* gzipped文件我会提取所以我想有条件地添加一个基于内容编码的包装,我不知道直到头后通过。 – mpen 2014-10-06 15:39:39

回答

0

您是否可以使用curl来读取文件? http://php.net/manual/en/book.curl.php

$ch = curl_init(); 
curl_setopt_array($ch, array(
    CURLOPT_URL => 'http://www.example.com/myarchive.gz' 
    , CURLOPT_HEADER => 0 
    , CURLOPT_RETURNTRANSFER => 1 
    , CURLOPT_ENCODING => 'gzip' 
)); 
echo curl_exec($ch); 
+0

我特别想避免卷曲,但你也错过了这个问题的前提。我不知道编码,直到我回头。 – mpen 2014-10-06 15:35:49