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 :

CGI + upload


Sujet :

Web Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Février 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 61
    Par défaut CGI + upload
    Bonjour,
    J'ai un problème dans un de mes script perl. En fait le but est d'uploader un fichier et ensuite de faire un "mv" (fonction rename)

    Voilà le script :
    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
    ################################################################################
    ## Process Uploaded File
    ################################################################################
        if (-d $session_dir)
          {
    	my $query = new CGI;
    	my $file_name = $query->param ("filename");
    	$file_name = ~s /.*[\/\\](.*)/$1/;
    	my $upload_file_path = $upload_dir.$file_name;
    	my $upload_filehandle = $query->upload ("filename");
    	my $tmp_filename = $query->tmpFileName ($upload_filehandle);
    	close ($upload_filehandle);
    	print "Moving File to Upload Directory -> ";
    	if (rename ($tmp_filename, $upload_file_path))
    	  {
    	    print "<b style='color:green;'>Success</b><br>";
    	  }
    	else
    	  {
    	    print "<font color='red'>Failure</font><br>";
    	  }
    	print "Removing upload_size file -> ";
    	if (unlink ($upload_size_file))
    	  {
    	    print "<b style='color:green;'>Success</b><br>";
    	  }
    	else
    	  {
    	    print "<font color='red'>Failure</font><br>";
    	  }
          }
      }
    En fait l'upload_path est bon et l'autre je sais pas vraiment :s. En tout cas, il rate pcq il trouve pas le premier argument de la fonction rename() (je crois!

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Citation Envoyé par Adoz
    En fait l'upload_path est bon et l'autre je sais pas vraiment :s. En tout cas, il rate pcq il trouve pas le premier argument de la fonction rename() (je crois!
    Tu pourrais peut-être nous donner la raison de cette opinion ?

    A ta place, je n'essaierais pas de faire un rename() qui a quelques inconvénients comme le fait qu'il échoue s'il doit passer d'un système de fichier à un autre, je copierais plutôt directement les données de ton premier fichier dans le nouveau.
    Par ailleurs tu aurais peut-être intérêt à utiliser un script tout fait comme PsUpload, ça t'éviterais de prendre des risques avec un code maison.

    --
    Jedaï

  3. #3
    Membre éclairé

    Inscrit en
    Février 2006
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 61
    Par défaut
    Oui mais non . Je préfère corrigé pendant des heures pour comprendre mes erreurs plutôt que de prendre un tout fait .

    Et comment tu copie les données comme ça?

  4. #4
    Expert confirmé
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Par défaut
    Si tu es sûr de la taille de ton fichier, tu peux te contenter de slurper puis réécrire dans le fichier destination :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    open my($new_file), '>', $upload_file_path
      or die "Impossible d'ouvrir $upload_file_path : $!\n";
    print $new_file scalar( do { local $/; <$upload_filehandle> } );
    close $new_file;
    close $upload_filehandle;
    Sinon, tu fais une boucle avec read(), c'est nettement plus efficace que de recopier ligne par ligne ou d'encombrer ta mémoire avec un énorme fichier...

    Dernière possibilité, tu utilises le module File::Copy et sa fonction move(), en fait c'est celle que je te recommande.

    --
    Jedaï

Discussions similaires

  1. [FLASH 8] recherche script cgi pour l'upload
    Par magicpicpic dans le forum Flash
    Réponses: 11
    Dernier message: 20/10/2008, 12h43
  2. PERL CGI Formulaire et upload
    Par minusette dans le forum Web
    Réponses: 3
    Dernier message: 20/07/2007, 11h08
  3. script perl cgi pour upload flash
    Par magicpicpic dans le forum Web
    Réponses: 6
    Dernier message: 20/08/2006, 12h57
  4. Apache / CGI en C et upload de fichier
    Par Gédéon dans le forum Apache
    Réponses: 1
    Dernier message: 10/08/2005, 19h03
  5. [web] CGI - upload de fichier
    Par TronsoT dans le forum Web
    Réponses: 1
    Dernier message: 25/05/2005, 23h58

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