User since
2003-08-15
2653
Artikel
BenutzerIn
Wie kann ich einen binären string on the fly ausgeben ohne den header zu kennen?
Ich habe einen Datenbank, in der User dateien hochladen können.
Es ist jedoch den Usern überlassen, welche Dateitypen sie wählen.
Wenn ich die binären Daten einfach via print() ausgebe, gibts einen Zeichensalat im Browser.
Gibts da irgendwie einen "Allgemein-Header" ?
Das blöde ist nur: Es kann sich bei den Daten um TXT, JPEG, DOC, PDF usw. handeln. Es sind also nicht nur binäre datentypen sondern teilweise auch ascii
User since
2003-08-07
2921
Artikel
BenutzerIn
Auf deine Frage habe ich keine Antwort, aber du könntest MIME::Type benutzen um den Mime-Typ auszulesen und dann einen ordentlichen Header ausgeben.
geht eventuell "binary/octet-stream"?
User since
2006-02-17
628
Artikel
BenutzerIn
Beim upload wird doch der Type angegeben:
$type = uploadInfo($filename)->{'Content-Type'};
den kannst du auch benutzen zum ausgeben.
User since
2003-08-15
2653
Artikel
BenutzerIn
Ja aber was ist wenn für den Upload-Typ kein Mime vorliegt z.b.? Kann ja auch mal sein, dass der Typ selbst Entwickler ist.
User since
2006-02-17
628
Artikel
BenutzerIn
Wenn du den MIME Type nicht kennst, weiß das Skript nicht was es damit tun muss. dann kannst du nur raten. Aber eigentlich sollte bei einem upload immer was mit kommen, oder?
User since
2003-11-28
3645
Artikel
ModeratorIn
Nein, raten muss man nicht. Es gibt ja:
File::Type
File::MimeInfo
File::MimeInfo::Magic
File::MMagic
Wobei das erste Modul wohl das bestgeeignete ist.
Für Bilder kann man auch
Image::Info verwenden.
User since
2006-02-17
628
Artikel
BenutzerIn
Naja, das Modul macht genau das, was ich mit Raten meinte. Trotzdem kann ich mir nicht vorstellen, dass der MIME Type nicht beim upload dabei ist.
User since
2005-04-14
684
Artikel
BenutzerIn
Hallo
Ich kann mir nicht vorstellen, dass die aufgeladene(n) Datei(en) keine Datei-Endung haben.
Genau da setzt LWP::MediaTypes an.
use LWP::MediaTypes qw(guess_media_type);
$type = guess_media_type("/tmp/foo.gif");
Gruss
Kristian