在 php 上从 CURL 解压缩 gzip 文件
有谁知道如何解压缩我用curl 获得的gzip 文件的内容?
例如: http://torcache.com/torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent
响应
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 09 Jun 2010 01:11:26 GMT
Content-Type: application/x-bittorrent
Content-Length: 52712
Last-Modified: Tue, 08 Jun 2010 15:09:58 GMT
Connection: keep-alive
Expires: Fri, 09 Jul 2010 01:11:26 GMT
Cache-Control: max-age=2592000
Content-Encoding: gzip
Accept-Ranges: bytes
然后压缩的 gzip ,
我尝试了 gzdecode 但不起作用,gzeflate 也没有得到任何响应,并且文件的内容不超过 2k
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
只要告诉 cURL 在 gzip 压缩时自动解码响应即可
Just tell cURL to decode the response automatically whenever it's gzipped
使用
gzdecode
:给出
Use
gzdecode
:gives
libcurl 提供了一项功能,可以自动解压缩内容(如果使用 zlib 构建)。
请参阅 CURLOPT_ACCEPT_ENCODING 选项: https://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING .html
libcurl offers a feature that makes it decompress the contents automatically (if built with zlib).
See the CURLOPT_ACCEPT_ENCODING option: https://curl.haxx.se/libcurl/c/CURLOPT_ACCEPT_ENCODING.html
您是否尝试过设置标头以表明您接受 gzip 编码,如下所示?:
Have you tried setting the header stating that you accept gzip encoding as follows?:
使用 zlib 流包装器:
With a zlib Stream Wrapper:
您是否尝试过
gzuncompress
或gzinflate
?gzdeflate
压缩,与您想要的相反。老实说,我无法弄清楚gzdecode
与普通解压缩有何不同。还有 cURL 选项
CURLOPT_ENCODING
:这似乎意味着它会自动解压缩响应,但我还没有测试过。
Have you tried
gzuncompress
orgzinflate
?gzdeflate
compresses, the opposite of what you want. To be honest, I can't figure out howgzdecode
differs from normal uncompressing.There's also the cURL option
CURLOPT_ENCODING
:It seems to mean it'll automatically decompress the response, but I haven't tested that.
您可以使用 gzinflate 来完成此操作(假装 $headers 包含您的所有 HTTP 标头,而 $buffer 包含您的数据):
You can do it with gzinflate (pretending that $headers contains all your HTTP headers, and $buffer contains your data):