Thread Dateie speichern: produziert nur 0 Byte Dateien (8 answers)
Opened by smack: at 2007-05-09 15:40

smack:
 2007-05-09 15:40
#100 #100
User since
2007-05-08
27 Artikel
BenutzerIn
[default_avatar]
Hallo mit folgenden Script versuche ich Dateien abzuspeichern:
Code: (dl )
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
sub bildspeichern {
# gid & file
my $gid = $main::cgi->param('gid');
my $f = $main::cgi->param('Filedata');

share::logge('gid: '.$gid);

my ($kommando, @ruckgabe);

# random filename
my @zeichen = ("a" .. "z","A" .. "Z", 0 .. 9);
my $securestring = join ("", @zeichen[map{rand @zeichen}(1 .. 8)]);

# filehash
#my $hash = Digest::MD4->new;
#$hash->add($f);
#my $filename = $hash->digest;
my $filename = join ("", @zeichen[map{rand @zeichen}(1 .. 40)]);


if($gid eq 'neu') {
chdir("./bilder");
mkdir($securestring, 0777);
chdir("..");
}
else {
$kommando = "SELECT COUNT(*) as count FROM `gal_bilder` WHERE `galid` = '".$gid."'";
$mysql::query = $mysql::db->prepare($kommando);
$mysql::query->execute || seite::fehler('500','1 mySQL meldet:<br \>#'.$DBI::err.' - <i>'.$DBI::errstr.'</i><br \><br \>Querycode:<br \><code>'.$kommando.'</code>');

@ruckgabe = $mysql::query->fetchrow();

if($ruckgabe[0] > 0) {
$kommando = "SELECT `securestring` FROM `gal_bilder` WHERE `galid` = '".$gid."' LIMIT 1";
$mysql::query = $mysql::db->prepare($kommando);
$mysql::query->execute || seite::fehler('500','2 mySQL meldet:<br \>#'.$DBI::err.' - <i>'.$DBI::errstr.'</i><br \><br \>Querycode:<br \><code>'.$kommando.'</code>');

@ruckgabe = $mysql::query->fetchrow();
$securestring = $ruckgabe[0];
}
else {
chdir("./bilder");
mkdir($securestring, 0777);
chdir("..");
}
}

$kommando = "INSERT INTO `gal_bilder` (`id`, `galid`, `bildname`, `securestring`, `titel`, `uploaded`) VALUES (NULL, '".$gid."', '".$filename.".jpg', '".$securestring."', '', NOW());";
$mysql::query = $mysql::db->prepare($kommando);
$mysql::query->execute || seite::fehler('500','3 mySQL meldet:<br \>#'.$DBI::err.' - <i>'.$DBI::errstr.'</i><br \><br \>Querycode:<br \><code>'.$kommando.'</code>');

# save the file
open DAT,"> ./bilder/$securestring/$filename.jpg";
binmode $f;
binmode DAT;
my $data;
while(read $f,$data,1024) {
print DAT $data || share::logge("fehler beim schreiben von $data");
}
close DAT;

share::logge("$f erfolgreich gespeichert!");

print "Content-Type:text/html\n\n";
print "$f erfolgreich gespeichert!";

exit;
}
es werden die Dateien schon erstellt usw, aber es sind dann nur 0 Byte Dateien drin. Die Rechte der Ordner mit dem securestring sind 755 allerdings sollten sie doch 777 sein?

kann mir jmd helfen: wenn man z.b. http://****/cgi-bin/galerie/main.cgi?typ=html¶... sind die Dateien 0 Byte groß auch wenn ichs per formular schicken lasse.

View full thread Dateie speichern: produziert nur 0 Byte Dateien