Hallo Baseportaluser,
beschäftige mich immer noch mit dem Uploadtool aus Bibliothek ( Verzeichnis "tools").
Mein Verzeichnisordner lautet: Home/aufspielen/upload und Home/aufspielen/template und Die Originaldatenbank lautet "Origialbild".
Als Anhang habe ich die beiden Seiten nach meinen Bedürfnissen konfiguriert jedoch ohne Erfolg.
Vielleich findet ja einen von Euch den Fehler in den beiden Scripts.Würde mich freuen wenn Ihr mal hinein schaut.
"Template"
-------------------------------------------------
<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/upload">link</a></p>
<perl>
$dborginal="/wart4you.de/aufspielen/originalbild";
$dbid="0";
$dbdf="bild";
$dbnf="bild_name";
$src="/wart4you.de/aufspielen/upload";
</perl>
<include src=$src>
<perl>
&upfile if ($cmd eq "upfile");
</perl>
</body>
-------------------------------------------------
"Upload"
<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>