Bonjour

Je vous mets un extrait de mon code qui me permet de recuperer un upload de fichier juste avant de le reexpedier :
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&" ;
		}
	}
}
Mon probleme se trouve a la reexpedition, en effet %vars est vide et dans le log d'erreurs apache j'ai :
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 :
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--
Merci de votre aide