File (Image/TIFF) Upload
Frank Gregor
- php
0 lachesis0 Frank Gregor
Hi!
Ich grüble jetzt schon seit einiger Zeit über einem für mich unerklärlichen Problem. Für einen Kunden habe ich eine Produktdatenbank entwickelt, die auch einen Image-Browser enthält. Hier kann $Kunde Bilder (GIF/JPEG/TIFF) hochladen, welche dann via imagick auf ein kleineres, anzeigbares Format runtergerechnet werden.
GIF und JPEG Files funktionieren Problemlos. Nur TIFF zickt hier rum. beim Upload von TIFF's erhalte ich permanent als Mime-Type "application/octet-stream" zurück, statt wie erwartet "image/tiff".
Das wäre Problem #1.
Das Zweite komische ist, dass imagick auf der Serverseite offensichtlich auch nix mit dem hochgeladenen Image anfangen kann. Offensichtlich wird es nicht als TIFF erkannt, denn "imagick_readimage" liefert mir keinen gültigen Wert zurück (Resource) sondern eine "1" (soll wohl ein INT sein).
Kennt jemand diese Probleme?
Kann mir jemand Tips geben, wo ich ansetzen sollte?
Danke
phranck
Hallo Frank,
können den Browser etwas mit .tiff anfangen?
Meines Wissens nach nicht oder?
Grüßle, lach
können den Browser etwas mit .tiff anfangen?
Meines Wissens nach nicht oder?
Hm... das weiß ich ehrlich gesagt nicht so recht. Wo hast du diese Info her? Ich google schon drei Stunden rum und finde einfach dazu nix. Es wäre natürlich Klasse, wenn ich $Kunde so eine Info schwarz auf weiß vor die Nase halten könnte... (-:
:wq!
phranck
Hallo Frank,
in etwa soetwas?
http://www.ztt.fh-worms.de/de/sem/ss95/www-bilder/node14.html#SECTION000510000000000000000
Grüßle, lach
in etwa soetwas?
http://www.ztt.fh-worms.de/de/sem/ss95/www-bilder/node14.html#SECTION000510000000000000000
Hm... fast! (-:
Hier geht es aber um Mime-Types anzuzeigender Bilder. Stimmt, das kam in meiner Fragestellung nicht ganz rüber. Ich lade TIFF/JPG/GIF Files hoch und erstelle daraus JPEG-Thumbnails (jedenfalls hatte ich das vor). Angezeigt wird dann also nur das kleine JPG.
Wenn ich auf Serverseite mit $_FILES den Mime-Type abfrage, bekomme ich besagten "octet-stream"...
:wq!
phranck
Moin!
Wenn ich auf Serverseite mit $_FILES den Mime-Type abfrage, bekomme ich besagten "octet-stream"...
Und wenn der Browser den Mime-Typ des hochzuladenden Bildes nicht kennt, trägt er da eben genau das ein. Bzw. wenn jemand dir unbedingt böse, manipulierte Bilder unterschieben will (wer weiß, was man da reinpacken kann), dann schreibt er als Mime-Typ eben irgendeinen passenden String rein.
Diese Angabe zur Grundlage zu machen, welcher Bildtyp hochgeladen wurde, ist fahrlässig. Weil der Browser das mutmaßlich nur nach der Dateiendung entscheidet - er schaut aber nicht, ob die Datei tatsächlich das angegebene Dateiformat enthält.
Benenne ich ein TIFF-Bild als ".jpg" um, ist es zwar immer noch ein TIFF-Bild, aber der Browser wird es als "image/jpeg" übertragen. Wenn du dann falsch reagierst, ist das schlecht.
- Sven Rautenberg
Hi Sven!
Das ist vollkommen richtig, und dem stimmt ich dir ja auch zu. Allerdings wird auf der Serverseite das File mit "imagick_readimage()" eingelesen. "imagick" verwendet hier ImagaMagick's API, welches beim einlesen des Files selbst erkennt, um welches Format es sich handelt. Aber hier scheitert ja schon alles. Ich bekomme, wie bereits geschrieben, kein gültiges Handle zurück. Demzufolge liegt der Bock wohl bei imagick/ImagaMagick...
Von beiden habe ich die aktuellsten Versionen. Die TIFF-Lib habe ich vorhin auch noch upgedated. Google gibt mir zwar einige Postings von Leuten, die genau das selbe Problem haben, allerdings hat keinen von denen auch nur eine zum Ziel führende Antwort erhalten.
Ach ja, die Fehlermeldungen, die ich nach dem Upload bekomme (nach diesem lese ich das Bild sofort via imagick ein), sind folgende:
---snip---
Warning: imagick_convert() expects parameter 1 to be resource, boolean given in [...]
---snip---
:wq!
phranck
Moin!
Das ist vollkommen richtig, und dem stimmt ich dir ja auch zu. Allerdings wird auf der Serverseite das File mit "imagick_readimage()" eingelesen.
Wie es weiterverarbeitet wird, ist ja egal. Wenn du "es wird nicht image/tiff als Mimetyp vom Browser übermittelt" als Problem ansiehst, dann wurde dir ja schon gesagt, dass man sich auf Clientangaben nicht verlassen darf - dieses Fehlen der Angabe darf bei dir keinerlei Fehler auslösen.
"imagick" verwendet hier ImagaMagick's API, welches beim einlesen des Files selbst erkennt, um welches Format es sich handelt. Aber hier scheitert ja schon alles. Ich bekomme, wie bereits geschrieben, kein gültiges Handle zurück. Demzufolge liegt der Bock wohl bei imagick/ImagaMagick...
Da du ja PHP benutzt: Was sagt getimagesize() denn zu deinem TIFF?
- Sven Rautenberg
können den Browser etwas mit .tiff anfangen?
Meines Wissens nach nicht oder?
ACK, die browser nicht, aber php oder sonstige serverseitige proggies.
du kannst ja z.b die tiffs in jpg convertieren, dann klappts auch mit dem browser....
Hm... das weiß ich ehrlich gesagt nicht so recht. Wo hast du diese Info her?
z.b von hier:
http://selfhtml.teamone.de/grafik/formate.htm
enjoy
hoagie