IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

LWP partially downloaded file


Sujet :

Web Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Points : 23
    Points
    23
    Par défaut LWP partially downloaded file
    Bonsoir

    Avec LWP::UserAgent comment fait on pour reprendre le chargement d'un fichier interrompu.

    Je cherche l'équivalent de ce fait wget -c , l'option -c signifie "Continue getting a partially-downloaded file".

    Pour plus de détail voir mon script mangafox.pl

  2. #2
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Je ne pense pas que cela soit possible avec LWP::UserAgent

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Points : 23
    Points
    23
    Par défaut
    A l'addresse Perl & LWP ,
    tout est dans le sous titre du livre "Fetching web pages, Parsing HTML, Writing Spiders, & More" .

    Le fonctionnement de LWP est trés clairement expliqué avec de nombreux exemples.
    Seul manque peut être HTTPS, ou alors j'ai lu trop vite ou pas tout compris,
    c'est en Anglais.

    Pour mon probléme, la fonction UserAgent->get() a deux options:

    Range => taille des données restant à charger.

    :content_cb => callback appellée pour chaque packet reçu.

    A partir de là j'ai écrit le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    use strict;
    use LWP::UserAgent;
     
    my $u = "http://www.mangafox.com/media/manga.banner.png";
    my $f = "tmp.jpg"; 
     
    my $ua = LWP::UserAgent->new();
     
    ## Uncomment for test
    # unlink $f;
    # system("cp tmp.jpg tmp0.jpg");
    # system( "head -c 10000 tmp0.jpg > tmp.jpg" );
     
    download($u, $f);
     
    sub download  {
        my ($url, $file) = @_;
     
        my ($tries, @parameters, $FD);
     
        @parameters = ( $url,                  
                        ":content_cb" => sub { my ($chunk) = @_;
                                               print $FD $chunk;
                                             } 
                      ); 
        $tries = 4;
     
        while ( $tries ) {
     
            open($FD, ">>$file") || die "ERROR: $!";      
     
            my $bytes = -s $file;        
            if ( $bytes > 0 ) { push(@parameters, "Range" => "bytes=$bytes-" ) }
     
            my $res =$ua->get( @parameters );
            print $res->status_line . "\n";
            close $FD;
     
            # 416 Requested Range Not Satisfiable (fichier dejà complétement chargé)
     
            if ( $res->is_success || $res->code == 416 ) { return }        
            $tries --;
        }
     
        die "ERROR: download $url";   
    }
     
    # Test avec ImageMagick
    system("identify tmp.jpg");
    Ca a l'air de marcher. Mais que ce passe t'il si le serveur ne traite pas la directive
    HTTP Range ?

  4. #4
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Autant pour moi =)

    Merci pour le lien, ça semble fort instructif ... mais pour ton problème, je ne sais pas : il faudrait faire un test. Soit tu recevras une erreur (auquel cas, tu dois reprendre le téléchargement depuis le début), soit tu ne reçois pas d'erreur et le paramètre est ignoré (le téléchargement reprend donc depuis le début :p). Bref, dans tous les cas, tu devras reprendre depuis le début

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Portlet] PortletResponse download file
    Par outhman83 dans le forum Portails
    Réponses: 1
    Dernier message: 13/04/2010, 11h57
  2. [JMeter] Jmeter Plugin & Download file with JMeter
    Par belarbim dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 03/04/2008, 15h56
  3. uploading, downloading files
    Par rabeb dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 09/06/2007, 18h47
  4. servlet download file et open file
    Par allstar dans le forum Struts 1
    Réponses: 1
    Dernier message: 09/10/2006, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo