Pregunta

¿alguien sabe cómo descomprimir el contenido de un archivo gzip que tengo con rizo?

por ejemplo: http://torcache.com/torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent

respondió

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

entonces el gzip comprimido,

i trató gzdecode pero que no funciona, gzeflate así no que simplemente no reciben ninguna respuesta, y el contenido de los archivos no más de 2k son

¿Fue útil?

Solución

gzdecode :

<?php
    $c = file_get_contents("http://torcache.com/" .
        "torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent");
    echo gzdecode($c);

da

d8:announce42:http://tracker.openbittorrent.com/announce13:announce-listll42
...

Otros consejos

Sólo decirle cURL para decodificar la respuesta automática cada vez que es gzipped

curl_setopt($ch,CURLOPT_ENCODING, '');

ofertas libcurl una característica que hace que descomprimir los contenidos de forma automática (si se construye con zlib).

Vea la opción CURLOPT_ENCODING: http://curl.haxx.se/libcurl /c/curl_easy_setopt.html#CURLOPTENCODING

¿Usted ha intentado establecer la cabecera que conlleva la aceptación gzip codificación de la siguiente manera:?

curl_setopt($rCurl, CURLOPT_HTTPHEADER, array('Accept-Encoding: gzip,deflate'));

Con una zlib corriente Envoltura:

file_get_contents("compress.zlib://http://torcache.com/" .
    "torrent/63ABC1435AA5CD48DCD866C6F7D5E80766034391.torrent");

¿Usted ha intentado gzuncompress o gzinflate ?

gzdeflate compresas , lo contrario de lo que desea. Para ser honesto, no puedo imaginar cómo difiere gzdecode de descomprimir la normalidad.

También existe la opción de cURL CURLOPT_ENCODING :

  

El contenido de la "Accept-Encoding:" encabezado. Esto permite la decodificación de la respuesta. codificaciones soportadas son "identidad", "desinflado", y "gzip". Si una cadena vacía, "", se establece, se envía una cabecera que contiene todos los tipos de codificación admitidos.

Se parece significar que va a descomprimir automáticamente la respuesta, pero no he probado eso.

Puede hacerlo con gzinflate (pretendiendo que contiene $ cabeceras todos sus cabeceras HTTP, y $ búfer contiene sus datos):

if (isset($headers['Content-Encoding']) && ($headers['Content-Encoding'] === 'gzip' || $headers['Content-Encoding'] === 'deflate'))
    {
        if ($headers['Content-Encoding'] === 'gzip')
        {
            $buffer = substr($buffer, 10);
        }
        $contents = @gzinflate($buffer);
        if ($contents === false)
        {
            return false;
        }
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top