header für eine hochzuladende Datei bestimmen
Hallo Leute,
ich habe folgendes Problem. In einer Datenbank sollen die Dateinamen der hochgeladenen Dateien gespeichert werden. Die Dateien selbst werden in ein separates Verzeichnis auf dem Server gespeichert. Nun möchte ich gern sämtliche (bzw. die wichtigsten) Dateiinformationen als header mit in der Datenbank speichern. Aber wie kann ich die header-Informationen herausbekommen? Es handelt sich hierbei auch um ständig um andere Dateitypen.
Ich hoffe, ihr seid schlauer als ich und könnt mir helfen.
Gruß Martina
Antwort schreiben
Antwort 1 von Martina vom 08.07.2020, 09:27 Options
Hab ganz vergessen euch mitzuteilen, dass ich gern eine Lösung mittels php hätte.
Antwort 2 von son_quatsch vom 08.07.2020, 09:34 Options
Das sind wohl keine "header", die du meinst.
Dank dem Dateisystem kannst du für jede Datei ihre Größe ermitteln, genauso deren letztes Änderungsdatum.
Alles weitere muss für jeden Dateityp einzeln gemacht werden, da es keinen kleinsten gemeinsamen Nenner für alle Dateitypen gibt:
- Für Bilder gibt es in PHP diesen Bereich: http://de.php.net/manual/de/book.image.php, also z.B. die Dimensionen eines Bildes zu bestimmen ist einfach.
- Für Audiodateien (aber auch einige andere) gibt es http://getid3.sourceforge.net/
- Und für alles andere müsste man sich jeweils spezielle Lösungen suchen - oder gar selbst die Datenformate des Dateityps studieren und entsprechend gewünschte Infos selbst ermitteln
Antwort 3 von Martina vom 08.07.2020, 09:52 Options
Na gut ...
und wie bestimme ich dann z.B. die Größe der Datei und deren letztes Änderungsdatum?
Als Dateitypen kommen in Frage:
pdf, doc, xls, tif, jpg, gif, png, cdr, cpt, be, raw, stl, fld, vgi, scn, bin, txt ...
Antwort 5 von Martina vom 08.07.2020, 10:29 Options
Aber dann kann ich doch erst die Dateigrüße und den Typ auslesen, wenn die Datei schon gespeichert ist.
Geht es nicht auch mit $_FILES['load_file_db']['size'] und $_FILES['load_file_db']['type'] während des Hochladens?
Antwort 6 von son_quatsch vom 08.07.2020, 10:58 Options
Ehrlich gesagt nein. In dem Moment, in dem du auf $_FILES zugreifst sind die Dateien bereits vollständig hochgeladen worden (wenn es keinen Fehler gab).
$_FILES['load_file_db']['size'] ist in der Tat dasselbe: die Größe der Datei. Der Unterschied ist aber, dass diese Datei momentan nur temporär existiert.
$_FILES['load_file_db']['type'] ist kaum hilfreich und vom Client fälschbar.
Mehr Infos und viele Kommentare findest du unter
http://de2.php.net/manual/de/features.file-upload.php
Antwort 7 von Jaja vom 08.07.2020, 11:36 Options
hi,
ich hätt dir das "externe" programm
exiftool anzubieten, welches du auf deinem server installieren müsstest und per php dann mit aufrufen.
damit kannst du die metainformationen aller video- und bilddaten auslesen...
für die anderen datentypen, die dokumente sind könnten dir andere externe tools weiterhelfen - zu pdf fällt mir spontan das
pdftk ein, für den rest (weil ms formate) müsst ich noch suchen, gibts aber sicher..
möglicherweise reicht es da per dd die interessanden bytefolgen herauszukopieren und auszugeben ;) vielleicht kann auch antiword und xlhtml weiterhelfen die metainfos auszugeben.
bei txt wirds wohl nicht mehr als die dateigröße und änderungsdatum, das ist klar..