Pergunta

Estou usando a função PHP virtual () para enviar arquivos pelo Apache 2.2 (funciona mais rápido que readfile () ) e posso verificar as permissões de acesso do usuário.

Mas existe alguma maneira de adicionar suporte de download contínuo, com HTTP_RANGE?

Eu tentei coisas assim

if(isset($_SERVER['HTTP_RANGE'])) { 
        list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']); 
        str_replace($range, "-", $range); 
        $size2=$size-1; 
        $new_length=$size-$range; 
        header("HTTP/1.1 206 Partial Content"); 
        header("Content-Length: $new_length"); 
        header("Content-Range: bytes $range$size2/$size"); 
        apache_setenv('HTTP_RANGE', $_SERVER['HTTP_RANGE']);
    } else { 
        $size2=$size-1; 
        header("Content-Range: bytes 0-$size2/$size"); 
        header("Content-Length: ".$size); 
} 

Assim, os arquivos do cliente web foram baixados como se o HTTP_RANGE funcionasse, mas no Apache real apenas envia sempre os mesmos intervalos de arquivo como: se o cliente pede 4000-6000 bytes, o Apache envia 0-2000 e etc, então os arquivos foram corrompidos.

Acho que existe uma maneira de fazer isso usando apache_setenv, mas não consigo encontrar no Google nenhuma sugestão sobre isso.

Foi útil?

Solução

Tente usar o módulo xfilesend para Apache.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top