fileupload IE vs. Opera
ronny
- php
0 Cheatah0 Tom0 Thomas Luethi0 ronny
hi,
ich mache mit dem IE einen fileupload, der auch wunderbar funktioniert.
folgendes script dazu:
$tempname = $_FILES['file']['tmp_name'];
$bildname = $_FILES['file']['name'];
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
if($type != "image/gif" && $type != "image/pjpeg") {
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
}
if($size > "51200") {
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 50 KB!";
}
If(empty($err)) {
copy($tempname,"benutzer/bilder/$HTTP_SESSION_VARS[benutzername]/$bildname");
echo "<center>Die Datei $bildname wurde erfolgreich hochgeladen!<br><br>";
rename("benutzer/bilder/$HTTP_SESSION_VARS[benutzername]/$bildname", "benutzer/bilder/$HTTP_SESSION_VARS[benutzername]/bild1.jpg");
chmod ("benutzer/bilder/$HTTP_SESSION_VARS[benutzername]/bild1.jpg", 0777);
echo "<br>Die Datei wurde umbenannt</center>";
}
else {
foreach($err as $error)
echo "$error<br>";
}
wenn ich gleichen vorgang mit dem opera machen möchte, bekomme ich immer die meldung
--> nur gif und jpeg Dateien dürfen hochgeladen werden.
warum das denn? unterstützt der das nicht?
danke
ronny
Hi,
if($type != "image/gif" && $type != "image/pjpeg") {
was der Client behauptet, als MIME-Type zu verschicken, ist bar jeden Belanges. Validiere den _Inhalt_ der Datei. Siehe Archiv.
Cheatah
Hello,
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
if($type != "image/gif" && $type != "image/pjpeg") {
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.<br />";
Auf den Mime-Type vom Browser würde ich mich auch nicht verlassen, sondern diesen auf dem Server überprüfen.
Die Funktion getImageSize() liefert nur Daten, wenn es ein Bild ist. und dann kann man den Header der Files auslesen und schauen, als was sie gekennzeichnet sind.
Musst Du mal unter "Dateiformate" googlen.
Grüße
Tom
-------------
<?php
$size = GetImageSize ("testimg.jpg",&$info);
if (isset ($info["APP13"])) {
$iptc = iptcparse ($info["APP13"]);
var_dump ($iptc);
}
?>
Hallo,
if($type != "image/gif" && $type != "image/pjpeg") {
^^^^^^^^^^^^
Woher hast Du dieses "image/pjpeg"?
Der korrekte MIME-Type fuer JPEG-Bilder heisst:
image/jpeg
Siehe z.B.
http://www.iana.org/assignments/media-types/image/
http://www.rfc-editor.org/rfc/rfc2046.txt
http://selfhtml.teamone.de/diverses/mimetypen.htm#uebersicht
Wie meine Vorredner schon schrieben, solltest Du Dich
aber nicht auf das verlassen, was die Browser/Benutzer
vorgeben, Dir zu schicken, sondern lieber pruefen,
worum es sich wirklich handelt.
getimagesize() duerfte Dir dabei helfen.
Gruesse,
Thomas
hi,
if($type != "image/gif" && $type != "image/pjpeg") {
^^^^^^^^^^^^
Woher hast Du dieses "image/pjpeg"?
hihi, ist mir noch gar nicht aufgefallen ;) ( schreibfehler ?)
keine ahnung wie es da steht, seltsam das es trotzdem im IE funktioniert ;)
jetzt gehst auch im opera, lol ;) dank für den hinweis, und die andere sache mit
get_image_size schau ich mir heute abend gleich an ;)
danke
ronny
Hallo,
Woher hast Du dieses "image/pjpeg"?
hihi, ist mir noch gar nicht aufgefallen ;) ( schreibfehler ?)
Nein, vermutlich hast Du es irgendwo "abgeschrieben",
wo es falsch stand. Und es nahm mich wunder, wo.
Hab's jetzt vermutlich gefunden: In einem Benutzerkommentar unter
http://www.php.net/manual/de/features.file-upload.php
Dieser falsche MIME-Type wird noch an diversen Orten
verbreitet oder diskutiert:
http://www.google.com/search?q=image%2Fpjpeg
Korrekt und offiziell ist aber wie gesagt:
image/jpeg
und die andere sache mit
get_image_size schau ich mir heute abend gleich an ;)
Tue das. Die Funktion hat uebrigens keine Underscores "_":
getimagesize()
http://www.php.net/manual/de/function.getimagesize.php
Gruesse,
Thomas