Bin mir keines Fehlers bewusst????:-(
Hier der Code vom Upload-Script
<!-- [BEGIN Custom1] -->
<!-- [END Custom1] -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<!-- [BEGIN Custom2] -->
<!-- [END Custom2] -->
<HEAD>
<!-- [BEGIN Custom3] -->
<!-- [END Custom3] -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META NAME="Generator" CONTENT="NetObjects Fusion 5.0.1 für Windows">
<TITLE>
Home
</TITLE>
<!-- [BEGIN Layoutscript] -->
<!-- [END Layoutscript] -->
<!-- [BEGIN Masterscript] -->
<!-- [END Masterscript] -->
<!-- [BEGIN Custom4] -->
<!-- [END Custom4] -->
</HEAD>
<!-- [BEGIN Custom5] -->
<!-- [END Custom5] -->
<BODY BGCOLOR="#FFFFFF" TEXT="#000000"
<perl>
sub upfile {
# ---- Variabeln müssen angepasst werden ----------- #
# Datenbank zum Bild zwischenspeichern
$dbbild="/wart4you.de/aufspielen/bild";
# Variable zum durchschleifen der Daten für die Orginal Datenbank
# Diese 4 Variablen müssen vor dem Aufruf der Sub gefüllt werden.
# $dborginal Orginal Datenbank in der das File gespeichert werden soll
# $dbid Id des Datensatzes der orginal Datenbank zum entgültigen speichern des Bildes via mod
# $dbdf Name des Dateifeldes der Orginal Datenbank
# $dbnf Name des Feldes für den umgewandelten Datei Namen der Orginal Datenbank
$up_schleife="&dborginal=$dborginal&dbid=$dbid&dbdf=$dbdf&dbnf=$dbnf";
# Zulassen von Dateitypen. Bei diesen drei wird die Breite und Höhe ermittelt.
# Es können weitere hinzugefügt werden, bei denen wird dann aber nicht die B/H ermittelt.
$erlaubte_dateitypen = "gif|jpg|png|GIF|JPG|PNG";
# Maximale Größe in Byts die das Hochgeladene Bild haben darf.
$filemax="100000"; # entspricht 100 Kb
# Maximale Breite für das Vorschaubild, die Höhe des Bildes wird dann berechnet.
$vormax="500"; # entspricht 500 pixel
# Link zu dem File Verzeichniss
$f_link="http://www.wart4you.de/files";
# ---- ende ----------- #
$maxg=$filemax/1000; # Umrechnen der Byts in Kb
out "<div align=center>";
out "<table bgcolor='#000000' width='550' cellspacing='1' cellpadding='4' border='0'>";
out "<tr bgcolor='#e0e0e0'><td colspan=2 align='center'>";
out "<font face='Verdana, Arial' size='3' color='#000099'><b>FOTO UPLOAD</b></font>";
out "</td></tr>";
# Aufruf des Formulars wenn neues Foto oder anderes Foto gewünscht
# Wenn ein anderes Bild gewünscht wird erst das alte Bild löschen
if ($_put{up_Id} ne "")
{
mod "Id==$_put{up_Id}",["bild","","_filec_bild","1"],"$dbbild";
del "Id==$_put{up_Id}",$dbbild;
}
# dann das Formular zu upload ausgeben.
&formularfile();
}
# ---- Ende neues / anders Bild -------------- #
# ---- Wenn ein Bild gewählt und überprüft wurde zum Orginal Datensatz hinzufügen.
if ($up_cmd eq putbild)
{
get "Id==!$_put{up_Id}",$dbbild;
mod "Id==!$dbid",["$dbdf","$bild","_filec_bild","2","$dbnf","$bild_name"],"$dborginal";
del "Id==$_put{up_Id}",$dbbild;
# ---- Meldung ausgeben. Wer möchte kann hier auch noch ne Mail verschicken ---- #
out "<tr bgcolor='#f4f4f4'><td align='center' colspan='2'>";
out "<b>Ihr Foto wurde gespeichert und ist nun verfügbar.<br>Vielen Dank!</b>";
out "</td></tr>";
}
# ---- Ende Eintrag Orginal Datenbank ---- #
# ---- Wenn das Formular abgschickt wurde Datei speichen/überprüfen und Meldung ausgeben.
if ($up_cmd eq vorschau)
# Überprüfen und Umwandeln von Sonderzeichen
$bild1 =~ s/(\W)/sprintf("%%%02X",ord($1))/ge;
$bild1 =~ s/%2E/./g;
# Zwichenspeichern der Datei
put ["bild", $_put{up_bild}, "bild_name", $bild1],"$dbbild";
get "bild_name==!$bild1",$dbbild;
# Überprüfen ob es eine zugelassene Dateiendung ist, wenn nicht Datei und Eintrag in db löschen.
if($bild !~ /.($erlaubte_dateitypen)/)
{
out "<tr bgcolor='#f4f4f4'><td align='center' colspan='2'>";
out "<font color='#cc0000'>Sie haben eine ungültige Datei ausgewählt.</br>";
out "Bitte wählen Sie ein Foto im Format $erlaubte_dateitypen aus.</font>";
out "</tr></td>";
mod "Id==$Id",["bild","","_filec_bild","1"],"$dbbild";
del "Id==$Id","$dbbild";
&formularfile();
} else {
# Wenn Dateiendung richtig, dann Datei hohlen und größe in Kb errechnen
$x=get "$f_link/$bild_name";
$dateig=length($x)/1000;
$dateigaus=sprintf('%.2f',$dateig); # auf 2 nachkommastellen
# Wenn die Datei die max. Dateigröße überschreitet, Datei und Eintrag in db löschen.
if (length($x) > $filemax)
{
out "<tr bgcolor='#f4f4f4'><td align='center' colspan='2'>";
out "<font color='#cc0000'>Das von ihnen gewählte Foto hatt $dateigaus Kb und ist somit zu groß.</br>";
out "Es können nur Fotos gespeichert werden die max. $maxg Kb nicht überschreiten.</font>";
mod "Id==$Id",["bild","","_filec_bild","1"],"$dbbild";
del "Id==$Id",$dbbild;
out "</td></tr>";
&formularfile();
} else {
# Wenn Dateigröße und Endung Ok, dann Bild als Vorschau mit breite, höhe und Größe in Kb ausgeben
$name1="$bild_name";
@name = split(/\./,$name1);
if ($name[1] eq "gif" or $name[1] eq "GIF")
{
my($w,$h)=&gifsize($x);
$wout="</td></tr><tr bgcolor='#f4f4f4'><td align='left' colspan='2'>Breite: <b>$w</b> - Höhe: <b>$h</b>";
$w_out=$w;
$h_out=$h;
} elsif ($name[1] eq "jpg" or $name[1] eq "JPG") {
my($w,$h)=&jpegsize($x);
$wout="</td></tr><tr bgcolor='#f4f4f4'><td align='left' colspan='2'>Breite: <b>$w</b> - Höhe: <b>$h</b>";
$w_out=$w;
$h_out=$h;
} elsif ($name[1] eq "png" or $name[1] eq "PNG") {
my($w,$h)=&pngsize($x);
$wout="</td></tr><tr bgcolor='#f4f4f4'><td align='left' colspan='2'>Breite: <b>$w</b> - Höhe: <b>$h</b>";
$w_out=$w;
$h_out=$h;
} else {
out "";
}
if ($w_out > $vormax) {
$h_out=$h_out/$w_out*$vormax;
$w_out=$vormax;
}
out "<tr bgcolor='#f4f4f4'><td align='left' colspan=2>";
out "Foto Name: <b>$bild</b>";
out "</td></tr><tr bgcolor='#f4f4f4'><td align='center' colspan=2>";
out "<img src='$f_link/$bild_name' width=$w_out height=$h_out alt='Vorschaubild $bild Breite $w_out Höhe $h_out'>";
out "</td></tr><tr bgcolor='#f4f4f4'><td align='left' colspan='2'>";
out "<b>Fotoeigenschaften:</b>";
out "$wout";
out "</td></tr><tr bgcolor='#f4f4f4'><td align='left' colspan='2'>";
out "Dateigrösse: <b>$dateigaus Kb</b>";
out "</td></tr>";
out "<FORM name='bn' ACTION='baseportal.pl?htx=$htx&cmd=upfile&$up_schleife' METHOD='post' ENCTYPE='multipart/form-data'>";
out "<INPUT TYPE='hidden' NAME='htx:=' value='$htx'>";
out "<INPUT TYPE='hidden' NAME='up_Id:=' value='$Id'>";
out "<tr bgcolor='#f4f4f4'><td align='center' walign='center' nowrap>";
out "<INPUT TYPE='submit' NAME='Submit' VALUE='Ein anderes Foto wählen'></form>";
out "</td>";
out "<FORM name='bs' ACTION='baseportal.pl?htx=$htx&cmd=upfile$up_schleife' METHOD='post' ENCTYPE='multipart/form-data'>";
out "<INPUT TYPE='hidden' NAME='up_cmd:=' value='putbild'>";
out "<INPUT TYPE='hidden' NAME='htx:=' value='$htx'>";
out "<INPUT TYPE='hidden' NAME='up_Id:=' value='$Id'>";
out "<input type='hidden' name='_filec_bild=' value=2>";
out "<td align='center' walign='center' nowrap>";
out "<INPUT TYPE='submit' NAME='Submit' VALUE='Dieses Foto speichern'></form>";
out "</td></tr>";
}
}
# Hier die subs zum errechenen der Breite und Höhe
sub formularfile {
out <<EOF;
<BODY>
<FORM ACTION="baseportal.pl?cmd=upfile&htx=$htx$up_schleife" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="hidden" NAME="up_cmd:=" value="vorschau">
<INPUT TYPE="hidden" NAME="htx:=" value="$htx">
<input type="hidden" name="_filec_bild=" value=2>
<tr bgcolor="#f4f4f4">
<td><font face="Verdana, Arial" size="2"><b>Foto auswählen</b></font></td>
<td><INPUT TYPE="file" NAME="up_bild:=">
</td></tr><tr bgcolor="#f4f4f4">
<td colspan=2 align="center"><font face="Verdana, Arial" size="1">Es können nur Fotos im Format $erlaubte_dateitypen<br>mit einer max. Größe von $maxg Kb gespeichert werden.</font>
</td></tr><tr bgcolor="#f4f4f4">
<td colspan="2" align="center">
<INPUT TYPE="submit" NAME="Submit" VALUE="Foto Vorschau">
</td></tr>
</FORM>
</BODY>
EOF
}
sub gifsize {
my ($GIF)=@_;
my ($type,$a,$b,$c,$d,$s,$width,$height) ;
$type=substr($GIF,0,6);
if(!($type =~ m/GIF8[7,9]a/) || (length($s=substr($GIF, 6, 4))!=4) ){
return;
}
($a,$b,$c,$d)=unpack("C"x4,$s);
$width= $b<<8|$a;
$height= $d<<8|$c;
return ($width,$height);
}
sub jpegsize {
my ($JPEG)=@ _ ;
my ($count)=2 ;
my ($length)=length($JPEG) ;
my ($ch)="" ;
my ($c1,$c2,$a,$b,$c,$d,$width,$height) ;
while (($ch ne "\xda") && ($count<$length)) {
while (($ch ne "\xff") && ($count < $length)) {
$ch=substr($JPEG,$count,1);
$count++;
}
while (($ch eq "\xff") && ($count<$length)) {
$ch=substr($JPEG,$count,1);
$count++;
}
if ((ord($ch) >= 0xC0) && (ord($ch) <= 0xC3)) {
$count+=3;
($a,$b,$c,$d)=unpack("C"x4,substr($JPEG,$count,4));
$width=$c<<8|$d;
$height=$a<<8|$b;
return($width,$height);
} else {
($c1,$c2)= unpack("C"x2,substr($JPEG,$count,2));
$count += $c1<<8|$c2;
}
}
}
sub pngsize {
my $Buffer = shift;
my ($width,$height) = ( undef, undef );
if ($Buffer =~ /IHDR(.{8})/) {
my $PNG = $1;
($width,$height) = unpack( "NN", $PNG );
}
return ($width,$height);
}
}
out "</table></div>";
}
</perl>
TOPMARGIN=0 LEFTMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>
<!-- [BEGIN Seiten-Haupttext] -->
<!-- [END Seiten-Haupttext] -->
<!-- [BEGIN Master-Haupttext] -->
<!-- [END Master-Haupttext] -->
</BODY>
<!-- [BEGIN Custom6] -->
<!-- [END Custom6] -->
</HTML>
<!-- [BEGIN Custom7] -->
<!-- [END Custom7] -->
Hier vorsichtshalber auch noch das Template ( P.S. das Verzeichnis "bp-files" musste ich in "files" umschreiben- wird sonst nicht erkannt):
<head>
<title>Kein Titel</title>
<meta name="generator" content="Namo WebEditor v5.0">
</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">
<p><a href="http://www.wart4you.de/cgi-bin/baseportal.pl?htx=/wart4you.de/aufspielen/template&cmd=upfile">link</a></p>
<perl>
$dborginal="/wart4you.de/aufspielen/originalbild";
$dbid="$fotoid";
$dbdf="Bilddatei";
$dbnf="Titel";
$src="/wart4you.de/aufspielen/upload";
</perl>
<include src=$src>
<perl>
&upfile if ($cmd eq "upfile");
</perl>
</body>