Was ist der beste Weg, um den Dateityp einer Datei in PHP zu entdecken? Ich habe gehört, dass der Browser ausgetrickst werden kann, also was ist ein besserer Weg, dies zu tun?Der beste Weg, um einen Dateityp in PHP zu erkennen
Antwort
Sie finfo_file bei
<?php
echo finfo_file(finfo_open(FILEINFO_MIME), "foo.png");
?>
Ich glaube, Sie finfo_file() bedeuten MIME-Typ
von php.net Beispiel zu entdecken:
<?php
$finfo = finfo_open(FILEINFO_MIME); // return mime type ala mimetype extension
foreach (glob("*") as $filename) {
echo finfo_file($finfo, $filename) . "\n";
}
finfo_close($finfo);
?>
Schauen Sie verwenden können "magische Zahlen." Die ersten paar Bytes von Dateien identifizieren normalerweise, um welchen Dateityp es sich handelt. Zum Beispiel sind die ersten paar Bytes eines GIF entweder 47 49 46 38 37 61 oder 47 49 46 38 39 61, ASCII für GIF89a oder GIF87a. Es gibt viele andere "magische Zahlen". Siehe http://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files
EDIT: Ich glaube, das ist zuverlässiger als MIME-Funktionen auf PHP.
Sie können dem vom Browser zurückgegebenen Inhaltstyp nicht vertrauen. Es basiert auf Dateierweiterung und kann leicht ausgetrickst werden.
Als stalepretzel erwähnt es, beste Möglichkeit zu erraten Datei Inhalt-Typ verwendet magische Zahlen. Wenn Ihr Server auf einem * nix-Maschine ausgeführt wird, können Sie diese Funktion verwenden:
<?php
function get_file_type($file) {
if(function_exists('shell_exec') === TRUE) {
$dump = shell_exec(sprintf('file -bi %s', $file));
$info = explode(';', $dump);
return $info[0];
}
return FALSE;
}
?>
Usage: $file_type = get_file_type('my_file_name.ext');
PD: Check /usr/share/magic.mime, um weitere Informationen.
Bitte beachten Sie, dass die Verwendung von shell_exec ein potenzielles Sicherheitsproblem darstellt – josh123a123
- 1. Der beste Weg, um IronPython zu erkennen
- 2. Der beste Weg, um mehrere PHP zu verwalten umfasst?
- 3. PHP: Der beste Weg, um Text in Klammern zu extrahieren?
- 4. beste Weg, um statistisch Anomalien in Daten zu erkennen
- 5. Der beste Weg, um die Zeichenfolge in PHP zu komprimieren
- 6. Der beste Weg, um einen Benutzer eindeutig zu identifizieren
- 7. Der beste Weg, um einen WYSIWYG in Flex zu machen?
- 8. Der beste Weg, um einen Download zu starten?
- 9. Der beste Weg, um PHP-Haken zu tun
- 10. Der beste Weg, um Einkaufswagen mit PHP/MySQL zu implementieren
- 11. Der beste Weg, um Daten zu sichern PHP + MYSQL
- 12. Der beste Weg von PHP zu ASP.net?
- 13. Der beste Weg, um einen Release-Build von einem Debug-Build zu erkennen? .net
- 14. Was ist der beste Weg, um einen InputStream zu überwachen?
- 15. Was ist der beste Weg, um einen "Timer" zu implementieren?
- 16. Was ist der beste Weg, um einen Datenrahmen zu umgehen?
- 17. Was ist der beste Weg, um einen ByteArrayOutputStream zu schließen?
- 18. Der beste Weg, um einen duplicateMovieClip zu löschen?
- 19. Der beste Weg, um einen Cassandra-Cluster zu schrumpfen
- 20. playframework - Der beste Weg, um einen JSON-Werte zu trimmen
- 21. Der beste Weg, um Fehlermeldungen zu behandeln
- 22. Der beste Weg, um Erweiterungsmethoden zu implementieren
- 23. Der beste Weg, um Fehler zu behandeln
- 24. opencv: Der beste Weg zu erkennen Ecken auf Schachbrett
- 25. Der beste Weg, um programmatisch Bild zu erstellen
- 26. Der beste Weg, um Stringstream zu leeren?
- 27. Der beste Weg, um Rollover zu machen?
- 28. beste Weg, um einen Mitternachtsdatetime in C#
- 29. Welcher Dateityp ist der beste?
- 30. Was ist der beste Weg, um einen zufälligen Schlüssel in PHP zu generieren?
Beachten Sie, dass diese Methode eigene Probleme hat (z. B. leere oder mehrdeutige Strings zurückgeben). – Sampson