Bonjour,
Je tente un upload en perl mais sans succès.
Le client est une camera ip qui envoie le fichier en POST par http.
Le serveur est un virtual host sous Apache 2 sur un dédié debian lenny.
Voila le script de test sur le serveur :
Code perl : 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
62
63
64
65
66
67
68
69 #!/usr/bin/perl -w # NOTA: no "T" switch to upload jpg otherwise Apache error # ############### # SCRIPT HEADERS # ############### use strict; use warnings; # demande l'affichage des warnings (erreurs) use CGI; use CGI::Carp qw ( fatalsToBrowser ); # à virer en prod use File::Basename; # ########## # INIT # ########## my $query = new CGI; my $upload_dir = "/var/www/mon_domaine/upload"; my $log_file="/var/www/mon_domaine/upload.log"; # ########## # LOGS # ########## my $key; open LOG, ">> $log_file"; print LOG "------------- New entry ---------------\n"; foreach $key (sort (keys %ENV)) { print LOG "$key = $ENV{$key}\n"; } my $file_name = $ENV{'HTTP_CONTENT_DISPOSITION'}; $file_name =~ s/^attachment; filename=\"(.*)\"$/$1/; print LOG "file name = $file_name\n"; print LOG "local upload = $upload_dir\n"; close LOG; # ################ # IMG FILE UPLOAD # ################ my $upload_dest = $upload_dir . "/" ; $upload_dest .= $file_name; open (IMG_FILE, ">$upload_dest") or die "error "; binmode(IMG_FILE); while (<STDIN>) { print IMG_FILE $_; } # chmod 0666, "$upload_dest"; close IMG_FILE; # ########## # HTML # ########## print $query->header ( ); print <<END_HTML; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Thanks!</title> </head> <body> <p>Thanks for uploading your file</p> </body> </html> END_HTML exit 0;
J'ai corrigé les qq erreurs du début.. donc les logs d'apache ne font plus apparaitre d'erreur, et côté client je recueille un http 200 ok.
Le fichier est bien créé sur le serveur mais il est .. vide.
Donc soit il n'est pas envoyé, soit je le réceptionne mal.
J'ai passé la nuit là-dessus, je n'y vois plus clair
Dans cette seconde optique, pourriez-vous jeter un oeil averti et critiquer le côté fonctionnel du code svp (notamment la partie # IMG FILE UPLOAD)
?
merci d'avance
Partager