Wie kann ich prüfen, ob es sich bei einer Datei um eine MP3-Datei oder eine Bilddatei handelt, außer um jede mögliche Erweiterung zu prüfen?PHP Wie kann ich überprüfen, ob eine Datei MP3 oder Bilddatei ist?
Antwort
Sie können Bilddateien mit getimagesize
identifizieren.
Um mehr über MP3 und andere Audio/Video-Dateien finden Sie heraus, ich habe
php-mp4info
getID3() empfohlen.
versuchen mime_content_type()
<?php
echo mime_content_type('php.gif') . "\n";
echo mime_content_type('test.php');
?>
Ausgang:
image/gif
text/plain
Oder eine bessere Nutzung finfo_file() andersrum ist veraltet.
Ich bin neugierig, warum das einen Downvote bekommen hat? Es ist nur ab 5.3 – Gordon
rechts veraltet, deshalb frage ich Sie – kmunky
Seine Frage sagt ausdrücklich, überprüfen Sie den Dateityp neben nur Überprüfung der Dateierweiterung, die alle mime_content_type ist, es ist im Grunde ein eingebautes Array von Erweiterungen, es hat keine Idee, was die Datei wirklich ist. – TravisO
Einheimische Möglichkeiten, den MIME-Typ zu erhalten:
Für PHP < 5.3 Verwendung mime_content_type()
Für PHP> = 5.3 Verwendung finfo_fopen()
Alternativen die Mimetype sind exif_imagetype und getimagesize, aber diese verlassen, um zu bekommen die auf mit entsprechende libs installiert. Außerdem werden sie wahrscheinlich nur Bild-MIME-Typen zurückgeben, anstelle der gesamten Liste, die in magic.mime angegeben ist.
Wenn Sie sich nicht darum kümmern möchten, was auf Ihrem System verfügbar ist, wickeln Sie einfach alle vier Funktionen in eine Proxy-Methode ein, die den Funktionsaufruf an den verfügbaren Inhalt delegiert, z.
function getMimeType($filename)
{
$mimetype = false;
if(function_exists('finfo_fopen')) {
// open with FileInfo
} elseif(function_exists('getimagesize')) {
// open with GD
} elseif(function_exists('exif_imagetype')) {
// open with EXIF
} elseif(function_exists('mime_content_type')) {
$mimetype = mime_content_type($filename);
}
return $mimetype;
}
Sie können das FileInfo-Modul verwenden, das in PHP seit 5.3 integriert ist. Wenn Sie eine PHP-Version kleiner als PHP 5.3 verwenden, können Sie sie als PECL-Erweiterung installieren:
Nach der Installation gibt die Funktion finfo_file
Dateiinformationen zurück.
PECL-Erweiterung: http://pecl.php.net/package/fileinfo
PHP Dokumentation: http://www.php.net/manual/en/book.fileinfo.php
Sie finfo wie diese verwenden:
$mime = finfo_open(FILEINFO_MIME, $path_to_mime_magic_file);
if ($mime ===FALSE) {
throw new Exception ('Finfo could not be run');
}
$filetype = finfo_file($mime, $filename);
finfo_close($mime);
oder wenn Sie Probleme haben mit finfo nicht installiert ist, oder der Mime magic file funktioniert einfach nicht (es funktioniert auf 3 unserer 4 Server korrekt - alle identische Betriebssystem- und PHP-Installationen) - versuchen Sie dann, die native Linux-Datei zu verwenden (vergessen Sie nicht, den Dateinamen zu bereinigen: in diesem Beispiel le, ich weiß, der Dateiname vertraut werden kann, wie es in meinem Test-Code ein PHP temporärer Dateiname ist):
ob_start();
system('file -i -b '.$filename);
$output = ob_get_clean();
$output = explode("; ", $output);
if (is_array($output)) {
$filetype = trim($output[0]);
}
Dann geben Sie einfach den Mime Dateityp eine switch-Anweisung wie:
switch (strtolower($filetype)) {
case 'image/gif':
return '.gif';
break;
case 'image/png':
return '.png';
break;
case 'image/jpeg':
return '.jpg';
break;
case 'audio/mpeg':
return '.mp3';
break;
}
return null;
zu finden der MIME-Typ einer Datei Ich benutze die folgende Wrapper-Funktion:
function Mime($path)
{
$result = false;
if (is_file($path) === true)
{
if (function_exists('finfo_open') === true)
{
$finfo = finfo_open(FILEINFO_MIME_TYPE);
if (is_resource($finfo) === true)
{
$result = finfo_file($finfo, $path);
}
finfo_close($finfo);
}
else if (function_exists('mime_content_type') === true)
{
$result = preg_replace('~^(.+);.*$~', '$1', mime_content_type($path));
}
else if (function_exists('exif_imagetype') === true)
{
$result = image_type_to_mime_type(exif_imagetype($path));
}
}
return $result;
}
getimeinfo ist am besten Bilder zu finden. Überprüfen Sie, ob der Rückgabetyp falsch ist.
Diese Funktion prüft, ob die Datei ein Bild auf Erweiterung und Pantomime und gibt true zurück, wenn es ein Browser kompatibel Bild ...
function checkImage($image) {
//checks if the file is a browser compatible image
$mimes = array('image/gif','image/jpeg','image/pjpeg','image/png');
//get mime type
$mime = getimagesize($image);
$mime = $mime['mime'];
$extensions = array('jpg','png','gif','jpeg');
$extension = strtolower(pathinfo($image, PATHINFO_EXTENSION));
if (in_array($extension , $extensions) AND in_array($mime, $mimes)) return TRUE;
else return FALSE;
}
Danke! Das hat für mich funktioniert. – Harsha
Für Bilder basiert, die ich benutze:
function is_image($path)
{
$a = getimagesize($path);
$image_type = $a[2];
if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}
Der beste Weg ist die Funktion finfo_file. Beispiel:
<?php
if (isset($_FILES['yourfilename']['tmp_name'])) {
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['yourfilename']['tmp_name']);
if ($mime == 'image/jpg') {
echo "It's an jpg image!";
}
finfo_close($finfo);
}
?>
- 1. Wie kann ich überprüfen, ob eine xls-Datei bearbeitbare Datei ist oder nicht, mit phpexcel?
- 2. Erkennen, ob Datei MP3 ist
- 3. Wie kann ich programmgesteuert feststellen, ob eine MP3-Datei CBR oder VBR ist? (vorzugsweise mit C#)
- 4. Wie kann ich überprüfen, ob eine Datei ein Bild ist oder nicht?
- 5. Wie kann man überprüfen, ob eine Datei
- 6. php überprüfen, ob der Name einer Bilddatei nicht .jpg, .jpeg, .png oder .gif ist.
- 7. Python - Überprüfen Sie, ob eine Datei leer ist oder nicht
- 8. Überprüfen Sie, ob eine PDF-Datei mit PHP beschädigt ist
- 9. überprüfen, ob eine Datei ein Bild ist
- 10. Überprüfen Sie, ob Argument eine Datei oder ein Verzeichnis ist
- 11. Überprüfen, ob eine STL-Datei ASCII oder binär ist
- 12. Wie kann ich überprüfen, ob eine Datei eine gültige XPS-Datei mit C# ist?
- 13. Wie kann ich überprüfen, ob ein Wert eine Zahl ist?
- 14. Überprüfen, ob eine Datei geöffnet ist
- 15. Überprüfen, ob eine Ressourcendatei vorhanden ist
- 16. Wie überprüft man eine hochgeladene Datei, ob es ein Bild oder eine andere Datei ist?
- 17. Kann ich überprüfen, ob die Datei bereits geöffnet ist?
- 18. Ich kann keine mp3-Datei hochladen
- 19. Wie kann ich überprüfen, ob eine Zeichenfolge auf Englisch ist?
- 20. Wie kann ich überprüfen, ob eine Datei älter als eine bestimmte Zeit mit PowerShell ist?
- 21. Überprüfen, ob ich die Datei entfernen kann
- 22. Wie überprüfen Sie, ob eine Datei mit Perl geöffnet ist?
- 23. In PHP, wie kann ich überprüfen, ob Klasse existiert?
- 24. Wie kann ich überprüfen, ob Int in Array vorhanden ist?
- 25. PHP überprüfen, ob Datei mit Flock() gesperrt ist?
- 26. kann ich überprüfen, ob eine Datei unter einer URL existiert?
- 27. kann ich überprüfen, ob eine Datei unter einer URL existiert?
- 28. Wie kann ich MP3-Datei in UWP
- 29. PHP - Überprüfen, ob ein Array-Index existiert oder Null ist
- 30. Wie kann ich feststellen, ob eine Datei gzip komprimiert ist?
sagen Sie, dass ich überprüfen soll, ob eine Datei ein Bild ist oder nicht getimagesize mit so etwas wie: (! Getimagesize (Pfad)), wenn {print ‚! Diese Datei kein Bild ist‘;} ? getimagesize(); Gibt false zurück, wenn die Datei kein Bild ist? – kmunky
+1 für diese Antwort ... die einzige Möglichkeit, sicher zu sein, dass ein Bild ein Bild ist, ist die Verwendung einer Bibliothek (in diesem Fall sind es Einsen für Bilder), die die Datei tatsächlich öffnet und analysiert, wie Sie es vorschlagen. Auf diese Weise verhindern Sie, dass jemand ein .XLS in .GIF umbenennt und hochlädt. – TravisO
@kmunky: genau. Sehen Sie sich den manuellen Link an, um zu sehen, welche Bildtypen die Funktion erkennt. –