2009-05-28 12 views
0

Ich schreibe ein Objekt in PHP, das Dateien auf einem FTP-Server anzeigt. Ich benutze PHP eingebaute FTP-Funktionen, um die meisten der benötigten Informationen (Dateiname, Größe, zuletzt geändert, etc.) zu erhalten. Es gibt jedoch keine Funktionen, um den MIME-Typ einer Datei auf dem Server zu erhalten. Ich habe zwei verschiedene Methoden ausprobiert, die funktionieren, aber ich habe einige Probleme.Mime-Typen über FTP erhalten In PHP

Mit fileinfo als 34 Sekunden folgt nimmt den MIME-Typen von 10 Dateien zu erhalten:

$finfo = new finfo(FILEINFO_MIME); 
$mime_type = $finfo->file('ftp://username:[email protected]/path/file'); 

mime_content_type Verwendung() nimmt das Gleiche zu tun, nur 6 Sekunden:

$mime_type = mime_content_type('ftp://username:[email protected]/path/file'); 

Es gibt zwei Fragen, die ich hier suche. Das erste ist Sicherheit. Bei beiden Methoden werden die Anmeldedaten als Klartext übertragen (FTP ist natürlich von Natur aus unsicher, aber das macht es nur noch schlimmer). Das zweite Thema ist eher eine Best Practice. Offensichtlich ist mime_content_type() die beste dieser beiden Methoden, weil sie so viel besser funktioniert, aber veraltet ist. Gibt es einen besseren und möglicherweise sichereren Weg, dies zu tun? Ich kann nichts auf dem FTP-Server installieren, da dies für den FTP-Server eines beliebigen Benutzers gedacht ist, der es verwenden möchte, so dass die Verwendung eines Webdienstes nicht in Frage kommt.

Vielen Dank im Voraus, ~ James Armes

+0

Ist es wirklich notwendig, den MIME-Typ zu bekommen? In den meisten Fällen reicht das Betrachten der Dateiendung aus. Es ist natürlich nicht genauso zuverlässig, aber Sie können immer noch eine MIME-Typ-Überprüfung durchführen, wenn Sie die eigentliche Verarbeitung durchführen. –

+0

Ich möchte den echten Mime-Typ bekommen. Jeder kann ein Bitmap-Bild ändern, um eine JPEG-Erweiterung zu haben, aber es ist immer noch ein Bitmap-Bild. Die Dateierweiterung ist ebenfalls optional. Während Windows möglicherweise nicht weiß, wie man eine Datei ohne eine Erweiterung öffnet, macht Linux es ziemlich gut (nicht sicher über Mac). – JamesArmes

Antwort

3

Der Grund für die Verzögerung ist, dass Sie die Magie Byte jede Datei lesen müssen und Ihre Server-Magie-Datei, welche Art es ist, zu bestimmen, zu verwenden.

So öffnen Sie eine Übertragung in FTP und lesen diese Informationen, die nicht so schnell in FTP ist.

+0

Aber warum gibt es so einen Unterschied zwischen mime_content_type() und fileinfo? Sie gehen beide über FTP. – JamesArmes

+0

FileInfo ist viel besser programmiert. Wie in der Dokumentation von mime_content_type() angegeben. > Diese Funktion ist veraltet, da die PECL-Erweiterung Fileinfo die gleiche Funktionalität (und mehr) in einer viel saubereren Weise bietet. –

+0

Während ich zustimme, kann ich mir diesen Leistungsverlust nicht leisten. Gibt es einen Mittelweg (dh etwas, das besser funktioniert als fileinfo, aber nicht veraltet ist)? – JamesArmes