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

Langage Perl Discussion :

Calcul du hashage d'un fichier uploadé


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 44
    Points : 32
    Points
    32
    Par défaut Calcul du hashage d'un fichier uploadé
    Bonjour,

    J'ai un CGI qui permet l'upload d'un fichier. Il fonctionne bien.
    Je veux calculer le hashage MD5 de ce fichier afin de le stocker avec comme nom ce hashage :
    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
     
        # File descriptor du fichier
        $file_query = $query->upload('fichier');
     
        # Calcul de l'empreinte MD5 du fichier
        my $md5 = Digest::MD5->new;
        $file_name = $md5->addfile(*$file_query)->hexdigest;
     
        # Ouverture en mode binaire du fichier à créer
        open(FILE,">$upload_dir/$file_name") || &Error($query, "Erreur d'ouverture du fichier '$file_name' en ecriture, erreur $!", 1);
        binmode FILE;
     
     
        # Copie du fichier
        while ($bytes_count = read($file_query,$buff,2096)) {
        	$size += $bytes_count;
            print FILE $buff;
        }
        close(FILE);
    En supprimant l'étape de calcul du md5 et en donnant comme nom au fichier soit une constante soit le nom du fichier uploadé par l'utilisateur, cela fonctionne très bien, mais la, je ne récupére aucune erreur, mais le fichier n'est pas créé

    Quelqu'un saurait-il m'expliquer pourquoi ?

    Merci !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    J'ai résolu mon pb, il suffisait que je relace le pointeur au debut du fichier :
    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
     
        # File descriptor du fichier
        $file_query = $query->upload('fichier');
     
        # Calcul de l'empreinte MD5 du fichier
        my $md5 = Digest::MD5->new;
        $file_name = $md5->addfile(*$file_query)->hexdigest;
     
        # On replace le pointeur au début du fichier
        seek($file_query, 0, 0);
     
        # Ouverture en mode binaire du fichier à créer
        open(FILE,">$upload_dir/$file_name") || &Error($query, "Erreur d'ouverture du fichier '$file_name' en ecriture, erreur $!", 1);
        binmode FILE;
     
     
        # Copie du fichier
        while ($bytes_count = read($file_query,$buff,2096)) {
           $size += $bytes_count;
            print FILE $buff;
        }
        close(FILE);

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

Discussions similaires

  1. [Upload] Type MIME de fichiers à uploader
    Par franculo_caoulene dans le forum Langage
    Réponses: 6
    Dernier message: 27/10/2005, 09h49
  2. Fichier upload endommagé ?
    Par zefrit dans le forum Linux
    Réponses: 26
    Dernier message: 14/10/2005, 15h16
  3. Supprimer fichier uploader avec aspSmartUpload
    Par julio_097 dans le forum ASP
    Réponses: 2
    Dernier message: 11/08/2005, 16h27
  4. renommer un fichier uploadé
    Par Sowa dans le forum ASP
    Réponses: 2
    Dernier message: 07/02/2005, 09h23
  5. Réponses: 10
    Dernier message: 18/11/2003, 18h01

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