Bild hochladen.
Wallner Martin
- php
Hallo Leute!
Ich habe ein PHP-Script, dass eine per Browser, hochgeladene Datei am Server verändert und in das richtige Verzeichnis kopiert. Das Verändern funktioniert aber nur wenn das Bild im JPEG-Format ist. Folgedessen muss ich überprüfen ob, dass hochgeladene Bild auch wirklich im richten Format ist. Ich dachte mir mit dem MIME-Typ lässt sich das sicher überprüfen. Nur musste ich zu meinem Entsetzen feststellen, dass wenn ich die Datei unter Windows mit dem IE 5 hochlande, der MIME-Typ einer JPEG-Datei "image/type" ist. Unter Linux mit dem Mozilla 1.0 und den Opera 6.0 komme ich durch die Kontrolle, weil da der MIME-Typ "image/jpeg" ist.
Ist das normal? Hat noch jemand solche Erfahrungen gemacht? Ich habe es auf 2 unterschiedlichen Windows-PCs probiert.
Mit freundlichen Grüßen
Wallner Martin
Hallo Martin,
mit dem Bildupload hast du dann schon einige Erfahrung, vermute ich. Deshalb ist dir ja bekannt, dass dir der Server mit <form enctype="multipart/form-data" ...> die Variablen $picfile, $picfile_name, $picfile_size zur Verfügung stellt. Verlasse dich ja nicht auf den Mime-Type! Ich habe gute Erfahrungen mit getimagesize($picfile) gemacht, siehe eine mögliche Variante:
if(! empty($picfile_name))
{
$imageinfo = getimagesize($picfile);
$imagewidth = $imageinfo[0];
$imageheight = $imageinfo[1];
$imagetype = $imageinfo[2];
if (($imagetype == "1") || ($imagetype == "2") || ($imagetype == "3")) // jpg, gif, png
{
}
else
{
-- Nicht das richtige Format - Fehler --
return true;
}
if (($imagewidth > $maximagewidth) || ($imageheight > $maximageheight) || ($picfile_size > $maximagesize))
{
-- Darf nicht - Fehler --
return true;
}
else
{
if (! is_dir("imgtemp"))
{
if(! mkdir("imgtemp",0777)) // funktioniert eventuell auch nicht wg. Schreibrechten
{
-- Fehler --
}
}
$newfile = "imgtemp/".$picfile_name;
if (move_uploaded_file($picfile,$newfile))
{
$picfile = $newfile;
}
else
{
-- Fehler --
return true;
}
}
}
Ich hoffe, es ist dir eine Hilfe.
MIchael
Hallo Michael!
Ich habe es mittlerweile mit getsizeimage gemacht. Ich wollte nur wissen was es da auf sich hat. Aber wenn du sagst, dass ich mich nicht darauf verlassen kann, dann werde ich es auch bei meinen anderen Skripten ändern.
Danke.
MfG
Wallner Martin