Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Continuar una descarga pausada

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Dom Dic 09, 2007 9:47 am
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 487
Ubicación: Frente al monitor
Continuar una descarga pausada Responder citando

Quiero programar una aplicación que descarga archivos vía HTTP.

¿Cómo podría continuar una descarga si he parado de descargar?

En otras palabras... cómo hace Opera ( por ejemplo ) para continuar una descarga ( donde iba ) sin tener que reiniciar la descarga del archivo.

¿ Algún header de HTTP ?

Gracias.

PD: uso Socket pero cualquier módulo es útil ( en LWP no ví nada de esto ).
Mensaje Dom Dic 09, 2007 4:02 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
Responder citando

Un cliente puede notificar al servidor que desea bajar no todo el archivo sino solo una parte. Eso se lo indica en la cabecera HTTP con la entrada Range (sección 14, apartado 35, de la definición del protocolo HTTP/1.1).
Mensaje Jue Dic 20, 2007 11:59 am
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 487
Ubicación: Frente al monitor
Responder citando

Perfecto.

¡Muchas gracias!
Mensaje Mie Dic 26, 2007 2:50 pm
Zeokat
Perlero Frecuente
Perlero Frecuente
Registrado: 22 Ago 2006
Mensajes: 117
Responder citando

¿Algún ejemplo sencillo de cómo hacer esto con el módulo LWP?

Parece que hay que toquetear los headers.

Gracias de antemano.
Mensaje Mie Dic 26, 2007 3:45 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4143
Ubicación: Valladolid, España
Responder citando

En el foro Básico hemos hablado de eso hace poco. Mira el hilo que se llama "Programa que se conecte a una web y baje datos".
Mensaje Mie Dic 26, 2007 4:25 pm
Zeokat
Perlero Frecuente
Perlero Frecuente
Registrado: 22 Ago 2006
Mensajes: 117
Responder citando

Si, si... ya le eché un ojo... pero no vi por ninguna parte los rangos de bytes... y poco me solucionó. A ver si encuentro algo por ahí. Smile
Mensaje Mie Dic 26, 2007 5:30 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 487
Ubicación: Frente al monitor
Responder citando

Al final, con LWP no es tan dificil...

Perl:
use LWP::UserAgent;
use HTTP::Request;
my $req = HTTP::Request->new(GET => 'http://www.example.com/example.tar.bz2');
$req->header(Range => 'bytes=0-511');
my $ua = LWP::UserAgent->new();
my $respuesta = $ua->request( $req );

if ( $respuesta->is_success ) {
    print $respuesta->content;
}


Eso debe de tomar los primero 512 bytes Smile
Mensaje Mie Dic 26, 2007 6:05 pm
Zeokat
Perlero Frecuente
Perlero Frecuente
Registrado: 22 Ago 2006
Mensajes: 117
Responder citando

Sí, sí, al final preguntando por ahí ya me aclararon cómo hacerlo. Wink

Perl:
$ua->default_headers->push_header(Range => "bytes=-200");
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group