tu peux montrer ton formulaire stp ?
et au fait, tu devrais utiliser "use strict"....
Version imprimable
tu peux montrer ton formulaire stp ?
et au fait, tu devrais utiliser "use strict"....
mon formulaire:
et sinon d'habitude j'utilise use strict mais comme je me suis fortement inspiré d'un script trouvé sur le net, j'ai pas changer ca!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <html> <head> <title>Application Excel - BDD</title> </head> <body bgcolor="#6699FF"> <form method="get" action="/cgi-bin/get_file.pl" ENCTYPE="multipart/form-data" > <h4>Please send your excel file:</h4> <input type="file" name="FILE1"> <br> <input type="submit" value="Envoyer"> </form> </body> </html>
1) pourquoi as-tu un while alors que tu n'as que FILE1 à uploader ?
2) tu pourrais peut-être mettre
ca me semble aussi simple ;)Code:$File[$NumFile] = $req->param("FILE$NumFile");
oui je sais mais j'ai gardé cette partie de code au cas ou si je veux faire evoluer dmon formulaire e toute facon ca ne change en rien le fonctionnant pour un seul fichier!
l'erreur ne vient pas de la
je viens de la voir....
Ca risquait pas de marcher !!!!!!Code:
1
2 my $req = new CGI;
grrrr !!! tjrs utiliser "use strict" :twisted: ;)
non toujours pas malheureusement :cry: ! mais merci pour ton aide
je suppose que l'upload fonctionne pas car il arrive pas a ouvrir le fichier a l'endroit ou il doit etre uploader ! et en effet il ne le copie pas dans ce repertoire...Citation:
read() on unopened filehandle at c:\\WEBSER~1\\cgi-bin\\get_file.pl line 66.\n
Use of uninitialized value in string ne at c:\\WEBSER~1\\cgi-bin\\get_file.pl line 36.\n
bizarre que ton nom de fichier soit vide...
perso j'utilise ce petit script pour récupérer un fichier :
Si ca peut t'aider ;) pour sûr je vois que j'ai un binmode de mon filehandle qui traine là où tu n'en as pas. Tu peux tjrs utiliser ce bout de code pour t'assurer que tu peux uploader un fichier, pour tester avec ton fichier excel. après tu auras juste à reprendre la partie qui teste l'extension ;)Code:
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 my $UPLOAD_DIR = "doc/"; my $UPLOAD_URL = "/toto/doc/"; my $doc = $query_cgi->param('doc'); my $result = upload($doc) if $doc ne ""; ------------------------------- sub upload { my $doc = $_[0]; my @t = split /\\/,$doc; my $doc_name = $t[$#t]; my($query, $file_name, $upload_dir) = @_; my($size, $buff, $bytes_count); $size = $bytes_count = 0; if (! $doc) { return "Le document n'existe pas !!!"; } elsif (-e "$UPLOAD_DIR$doc_name") { return "Le document existe déjà !!!"; } else { my ( @safedoc_name ) = ( $doc_name =~ /(\w+)/g ); my $safedoc_name = "@safedoc_name"; $safedoc_name =~ s/\s/\./g; open(FILE,">$UPLOAD_DIR$safedoc_name") || print ("Error opening file $file_name for writing, error $!", 1); binmode FILE; while ($bytes_count = read($doc, $buff, 1024)) { $size += $bytes_count; print FILE $buff; } close(FILE); return "La doc $UPLOAD_DIR$safedoc_name a été enregistré."; } }
bon la j'halucine ton script marche pas chez moi !!!!!!!!!!!!!!!! :evil:
j'ai exactement la meme erreur! 8O
le probleme doit etre plus profond soit j'ai rien compris soit je suis trop crevé pour voir ce qui est evident :?:
essaie méthode post au lieu de get dans ton script à tout hasard ? :?
ca n'y change rien, method get ou post peut importe j'ai toujours ce message...j'commence a croire que j'ai fait un enorme oublie :? mais lequel :?: ???Citation:
Premature end of script headers: c:/webserver/cgi-bin/get_file.pl
Can't call method "param" on an undefined value at c:\\WEBSER~1\\cgi-bin\\get_fi~2.pl line 12.\n
histoire d'etre sur: peux tu me filer ton script perl entier et ton formulaire, s'il te plait?histoire de tester sans rien modifier dans ton script!
il fait 3500 lignes, t sûr ? :lol:
c koi la ligne 12 de ton script ?
Code:my $doc = $query_cgi->param('FILE1');
mais c'est bizarre mon script (pas celui que tu m'as filé) fonctionne quand je le lance d'une invite de commande mais fonctionne plus avec le formulaire!
et tu as bien déclaré $query_cgi à la place $req ?
voila le log quand j'utilise ton code :
et ligne 42 c'est :Citation:
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] malformed header from script. Bad header=Error opening file for writin: c:/webserver/cgi-bin/get_file_upload2.pl
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] Use of uninitialized value in concatenation (.) or string at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 38.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] binmode() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 39.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
[Tue Apr 11 13:59:56 2006] [error] [client 127.0.0.1] print() on closed filehandle FILE at c:\\WEBSER~1\\cgi-bin\\GET_FI~2.PL line 42.\n
Code:print FILE $buff;
c la ligne 38 qui foire parce que le nom de ton fichier est vide...
mets des print un peu partout dans ton script pour voir où tu perds le nom de ton fichier ;)
euh je crois que ca va etre une question "alacon" mais je me demande pocomment faire ur voir les print d'un fichier cgi avec un formulaire? et ou les voir? :?
parce que si je ne fait que compiler le *.pl il n'y a pas le cfichier et si je lance le formulaire j'ai juste le droit a Internal Server Error
et pourquoi il me met a chaque fois une erreur quand on test si le doc est pas vide:il aime pas le ne "" !!! mais pourquoi? il me dit uninitialized value in string ne 8OCode:my $result = upload($doc) if $doc ne "";
mets ca au début de ton script :
enlève tes print à la fin, mets juste unCode:
1
2 print $query_cgi->header, start_html();
à la place. et mets des print entre les 2 ;)Code:print $query_cgi->end_html;
euh quel print a la fin ? c'est pas clair la :oops:
ca :
ca gicle ;)Code:
1
2
3
4 print "Content-type: text/html\n\n"; print "<HTML><HEAD><META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0; URL=" . $namefile . "\"></HEAD><BODY></BODY></HTML>"; exit;