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 :

PERL CGI Formulaire et upload


Sujet :

Web Perl

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 47
    Points
    47
    Par défaut PERL CGI Formulaire et upload
    Bonjour à tous !!!

    Voilà, j'ai un petit problème : je ne suis pas du tout familiarisée avec les codes de type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    s/\w://; 
       s/([^\/\\]+)$//; 
       $_ = $1; 
       s/\.\.+//g; 
       s/\s+//g;

    C'est pour ça que pour créer ma page web, j'utilise le cgi.pm.
    J'aimerais télécharger un fichier depuis une machine cliente et l'envoyer sur le serveur pour le transformer. Pour ça, j'utilise une petite commande simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            start_multipart_form (-method=>'POST', -action=>'http://test.pl', -enctype=>'multipart/form-data'),
            filefield(-type=>'file', -name=>'uploaded_file', -size=>33),
            submit(-name=>'button_name',
                       -value=>'Valider les informations'),
             end_form;
    Puis dans le fichier test. pl, je rappelle mon fichier 'uploaded_file' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         $sdfile=param('uploaded_file');
    Je suppose que ca ne suffit pas du tout pour télécharger le fichier, mais de tout ce que j'ai vu c'est ultra compliqué pour moi
    Est-ce que qqn aurait un moyen simple de m'expliquer ce qu'il faut que je rajoute pour que mon fichier qui est sur le PC en client passe sur le serveur, SVP ?
    Je pense qu'il doit falloir faire un "copy" ou quelque chose dans ce genre...

    Merci beaucoup pour votre aide !!!

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 47
    Points
    47
    Par défaut Help !!!!!!!
    J'ai essayé plein de trucs que j'ai glané à droite à gauche et surtout sur le forum...
    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        $sdfile=param('uploaded_file') or die ("probleme de fichier : $!");
         open(file,">> essai_download.txt") || &Error("Error opening file essai_download.txt for writing, error $!",1);
         binmode file;
         while ($fichier = read($uploaded_file,$tmp,2096)){
         $size += $fichier;
         print file $tmp;
    }
         close(file);
    et ça aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
         $sdfile=param('uploaded_file') or die ("probleme de fichier : $!");
         open(fic,"> essai_download.txt") or die ("erreur fichier : $!");
         open(file,"$sdfile") or die ("impossible d'ouvrir le fichier : $!");
         while (<file >) {
         print fic $_;
    }
         close  file;
    Mais les deux me donnent la même chose : un fichier crée essai_download.txt VIDE !!!!
    Sur le forum il y a la même info avec un message comme quoi il manquait l'encodage, mais j'ai bien défini ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            start_multipart_form (-method=>'POST', -action=>'http://resultcreate2.pl', -enctype=>'multipart/form-data');
    Ca doit donc venir d'ailleurs, mais j'ai pas vraiment d'idée...

    Et vous ?

    Merci d'avance !!!!

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 47
    Points
    47
    Par défaut [Resolu]
    OK j'ai trouvé ! C'est justement les trucs que je ne comprends pas qui paraissent indispensables :
    s/\w://;
    s/([^\/\\]+)$//;
    $_ = $1;
    s/\.\.+//g;
    s/\s+//g;
    $file_name = $_;
    Est-ce que quelqu'un peut traduire, d'ailleurs SVP ?

    Merci quand même

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    2 ANS plus tard !

    Ca pourra peut être aider quelq'un, j'ai fait comme ça pour upload des fichiers TEXTE (Je sais pas si ça marche pareil pour les autres... ) :

    ATTENTION
    , mon site n'est pas sécurisé, je travail sur un réseau interne donc pour l'instant je ne me soucis pas de ces problèmes !

    Mon formulaire dans la page html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form action="../cgi-bin/TonScriptPerl.pl" method="post" ENCTYPE="multipart/form-data">
        <input type=file name=input>
        <input type=submit value="Charger les données">
    </form>
    La partie du script qui upload le fichier sur le serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    use CGI;
     
    my $cgi = new CGI;
     
    my $upload = $cgi->upload(input) || die "$!";
     
    open (INPUT, '> RepDeTelechargement/NomDuFichierSurLeServer') || die "$!";
    while (my $ligne = <$upload>) {
    	print INPUT $ligne;
    }
     
    close INPUT;
    Ce que je cherche à faire maintenant, c'est tester la présence ou non du fichier dans le formulaire (Dans le cas ou l'utilisateur ne renseigne pas de fichier, j'utiliserai un fichier par défault).

    Si quelqu'un à une idée !

    EDIT : Je crois que j'ai trouvé en fait !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ($cgi->param(input) eq "") {
        print "Y a pas de fichier =) ";
    }
    else {
         #mon traitement çi dessus
    }
    Dsl d'avoir fait remonter ce sujet pour rien

    ++

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/03/2014, 10h43
  2. Réponses: 4
    Dernier message: 13/06/2007, 15h27
  3. script perl cgi pour upload flash
    Par magicpicpic dans le forum Web
    Réponses: 6
    Dernier message: 20/08/2006, 12h57
  4. Probleme de formulaire d'upload
    Par Oberown dans le forum ASP
    Réponses: 5
    Dernier message: 26/10/2004, 14h00
  5. Réponses: 5
    Dernier message: 19/07/2004, 17h27

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