Bonjour
Je vous mets un extrait de mon code qui me permet de recuperer un upload de fichier juste avant de le reexpedier :
Mon probleme se trouve a la reexpedition, en effet %vars est vide et dans le log d'erreurs apache j'ai :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 use CGI; use Fcntl qw(:DEFAULT :flock); use File::Temp qw/ tempfile tempdir /; open(TMP,">","$post_data_file") or &bye_bye ("Can't open temp file"); my $i=0; $ofh = select(TMP); $| = 1; select ($ofh); while (read (STDIN ,$LINE, 4096) && $bRead < $len ) { $bRead += length $LINE; select(undef, undef, undef,0.35); # sleep for 0.35 of a second. $i++; print TMP $LINE; } close (TMP); open(STDIN,"$post_data_file") or &bye_bye("Can't open temp file"); my $cg = new CGI(); my $qstring=""; my %vars = $cg->Vars; my $j=0; while(($key,$value) = each %vars) { if(defined $value && $value ne '') { my $fh = $cg->upload($key); if(defined $fh) { #carp $fh; ($tmp_fh, $tmp_filename) = tempfile(DIR => $tmp_dir); while(<$fh>) { print $tmp_fh $_; } close($tmp_fh); $fsize =(-s $fh); $fh =~ s/([^a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg; $tmp_filename =~ s/([^a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg; $qstring .= "file[name][$j]=$fh&file[size][$j]=$fsize&"; $qstring .= "file[tmp_name][$j]=$tmp_filename&"; $j++; } else { $value =~ s/([^a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg; $qstring .= "$key=$value&" ; } } }
Premature end of script headers: /cgi-bin/upload.cgi
CGI.pm: Server closed socket during multipart read (client aborted?).
Etant debutant en perl j'ai repris ce code deja existant pour l'adapter mais je ne sais pas si il est correct.
Voila le contenu du fichier $post_data_file recu :
Merci de votre aide
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 -----------------------------5542324156557 Content-Disposition: form-data; name="hidden" test -----------------------------5542324156557 Content-Disposition: form-data; name="file_1"; filename="" Content-Type: application/octet-stream -----------------------------5542324156557 Content-Disposition: form-data; name="file_2"; filename="Music.txt" Content-Type: text/plain Disco /Funk YMCA Patrick Hernandez Rock Liquido Nirvana ACDC Green Day Noir Desir Lenny Kravitz RnR Chuck Berry Dany Brillant - St Germain -----------------------------5542324156557--
Partager