moritz+2007-11-01 09:49:00--Spricht etwas dagegen, leere Dateien nach dem hochladen einfach sofort zu löschen?
Und was genau ist dir an $CGI::POST_MAX unklar?
Dagegen spricht in der Theorie nichts, aber man muss erst mal auf die Idee kommen. :-)
Allerdings benutze ich eine laufende Nummer, falls zwei gleichnamige Dateien hochgeladen werden, und irgendwie will das Skript die nicht runterschmeissen...
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
sub upload_file {
my ($hashref) = @_;
my $file;
my $name;
my $buffer;
my $savefile;
my %filehash = %$hashref;
my $uploaddir = "/home/Michaela/public_html/uploadfiles/";
my $success_count = 0;
my @empty_files = ();
my @uploaded_files = ();
while (($name, $file) = each (%filehash)) {
$name =~ s/\W|\s//gi;
$savefile = $uploaddir . $name;
open(OUTFILE, ">$savefile.$$") or print "Error: Can't create file $savefile: $!";
binmode $savefile;
while(read($file, $buffer, 1024)) {
print OUTFILE $buffer;
}
close(OUTFILE);
check_filesize($savefile.$$);
$success_count++;
push(@uploaded_files, $file);
}
if (@empty_files) {
$message2 = "Nicht hochgeladen: @empty_files";
}
if ($error) {
$message = $q->strong($error);
} elsif (!$error) {
$message = "$success_count Datei(en) erfolgreich hochgeladen: @uploaded_files";
}
}
sub check_filesize {
my ($file_to_check) = @_;
my $filesize = 0;
my @file_info;
my $filesize;
@file_info = stat($file_to_check);
$filesize = $file_info[7];
if ($filesize == 0) {
chdir("/home/Michaela/public_html/uploadfiles/");
unlink($file_to_check) or print "Could not delete $file_to_check: $!";
} else {
}
}
Bringt aber bei mir den Fehler
"Could not delete /home/Michaela/public_html/uploadfiles/DBDOrac119targz5165: No such file or directory".
$CGI::POST_MAX habe ich jetzt verstanden: Es wird solange gesendet, bis die maximale Größe erreicht wird, dann bricht der Upload ab - richtig?
Dann müsste man doch theoretisch erkennen können, wenn keine Bytes ankommen - dann ist die Datei ja leer und der Upload könnte abbrechen. Oder ist das eine Milchmädchenrechnung?