Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
2672 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  CGI upload et tmpFileName()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

CGI upload et tmpFileName()

n°1429195
Elenglor
Posté le 22-08-2006 à 11:37:10  profilanswer
 

Bonjour à tous,
 
Je souhaite uploader un fichier excel (>5Mo) sur un serveur du réseau local.
Pour celà, j'utilise l'upload du module CGI (CGI.pm)
 
Je bloque actuellement sur tmpFileName(), passage obligatoire pour pouvoir faire un copy sur le serveur après l'upload.
Voilà mon code : formulaire HTML et script perl :
 
HTML :

Code :
  1. <form name="uploadForm" action="" method="post" enctype="multipart/form-data">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="2097152">
  3. <input type="file" size="50" name="uploaded_file" accept="text/*" maxlength="2097152">
  4. <input type="Submit" value="Upload" name="uploadPL" >
  5. </form>


 
J'ai aussi essayé en CGI mais ça ne change rien :

Code :
  1. print $vbuf->start_multipart_form(
  2.    -action => "",
  3.    -method => "post",
  4.    -id => "uploadForm",
  5.    -name => "uploadForm"
  6.    );
  7.    
  8.     print my $fileSelect = $vbuf->filefield(
  9.        -name =>'uploaded_file',
  10.        -default=>'starting value',
  11.        -size=>50
  12.       );
  13.     print('<input type="Submit" value="Upload" name="uploadPL" >');
  14.     print end_form();


 
 
 
 
Et voilà le script Perl:
 

Code :
  1. my $uploaded_file=param('uploaded_file');
  2.     if( $uploaded_file ne "" )
  3.     {
  4.     my $file=upload('uploaded_file');
  5.     print "file: ".$file."<br>";
  6.     my $localfilename=tmpFileName($file);
  7.     print "localfilename: ".$localfilename."<br>";
  8.     copy( "$localfilename", "F:\www\tmp\.$file" );
  9.     }
  10. }


 
Je récupère $uploaded_file qui m'affiche le nom du fichier, comme voulu
$file m'affiche également le nom du fichier (?)
et ... $localfilename ne m'affiche strictement rien  
 
ça bloque à ce niveau là, je n'ai pas de fichier temporaire sur le serveur, en ayant créé une variable d'envirronnement TMPDIR comme indiquer dans les différents perldoc que j'ai rencontré sur le net
 
Voilà un peu d'aide serait bienvenue ;)
 
see you
 
 

mood
Publicité
Posté le 22-08-2006 à 11:37:10  profilanswer
 

n°1429375
Elenglor
Posté le 22-08-2006 à 14:47:49  profilanswer
 

Bon j'ai essayé ça :  

Code :
  1. my $uploaded_file = $vbuf->param('uploaded_file');
  2. my $buffer;
  3.   open (OUTFILE,">>F:\\www\\tmp\\$uploaded_file" );
  4. while (my $bytesread=read($uploaded_file,$buffer,10000000)) {
  5.    print OUTFILE $buffer;
  6.   }
  7.        close $uploaded_file;


 
A priori j'arrive à créer le fichier et à récupérer les données d'un petit .txt de 1ko, mais lorsque j'essaye avec un fichier excel de 1Mo j'ai une corruption de données (et c'est biensur pour un fichier excel que je veux uploader)
 
... any ideas ?

n°1429413
Elenglor
Posté le 22-08-2006 à 15:05:33  profilanswer
 

Je me réponds tout seul ... :)
A titre d'information, j'ai résolu le problème, il faut transmettre en binaire et non ascii ..

Code :
  1. my $buffer;
  2.   open (OUTFILE,">>F:\\www\\tmp\\$uploaded_file" );
  3.   binmode OUTFILE;
  4. while (<$uploaded_file> ) {
  5.    print OUTFILE;
  6.   }
  7.        close $uploaded_file;


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  CGI upload et tmpFileName()

 

Sujets relatifs
Erreur suite upload image via coppermine[RESOLU AVEC HONTE] Pb avec un upload de fichier un peu étrange :)
Formulaire CGI encodage adresse mail[PHP] Upload de fichier presque fonctionnel (presk...)
Lire un fichier sur le client avant un upload[Résolu] Récupérer le chemin d'un fichier que l'on upload
[PHP] Upload et sécurité : renommer le fichier suffit ?Formulaire Perl/CGI générant du XML
Comportement fichiers temporaires apres uploadcreer une vignette après un upload
Plus de sujets relatifs à : CGI upload et tmpFileName()



Copyright © 1997-2014 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC