2012-12-21 3 views
5

Ich habe eine Seite zum Hochladen von Videos, und ich möchte die Dateitypen mp4 Flash-und Webm-Dateien sein. alle mp4-Erweiterungsdateien und Webm-Dateien funktionieren gut, aber die Flash-Dateien (.flv und .f4v) werden nicht erkannt und daher gibt php den Wert 'application/octet-stream' zurück, was meiner Meinung nach der Standard-MIME für alle Dateien ist. t erkannt. Gibt es eine bessere Methode als diesen Code, der die Flash-Dateien für die echten MIMES (video/x-flv und video/x-f4v) erkennt?php upload nicht recoginsing .flv und f4v extensions

$type = $_FILES["uploaded"]["type"]; 
$allowedTypes = ["video/mp4","video/quicktime","video/x-flv","video/x- f4v", 
       "video/webm"]; 
$isRefusedType = !in_array($type, $allowedTypes); 


if ($isRefusedType) 
{ 
    $message="not an accepted file type"; 
} 
    else $message="OK"; 

Antwort

2

Vielleicht können Sie diesen Code versuchen:

<?php 
    $finfo = finfo_open(FILEINFO_MIME_TYPE); // mimetype 
    $type = finfo_file($finfo, $filename); 
    finfo_close($finfo); 
?> 

Wie here beschrieben, müssen Sie PHP> = 5.3.0, ist es ein Problem?

Eine weitere Idee könnte sein, die Datensignatur zu überprüfen (siehe there):

<?php 
    $s = file_get_contents($_FILES["uploaded"]["tmp_name"]); 
    if (substr($s,0,3) == 'FLV') { /* It's good! */ } 
?> 
+0

Ich habe PHP 5.4.3 * ich * denke, so sollte es in Ordnung sein Dank, Ill geben es ist ein Schuss – user1559811

2

bei der Beschreibung von $ _FILES Beobachten [ 'userfile'] [ 'type'] in der Dokumentation PHP können wir siehe:

Der MIME-Typ der Datei, wenn der Browser diese Informationen zur Verfügung stellt. Ein Beispiel wäre "image/gif". Dieser MIME-Typ wird jedoch auf der PHP-Seite nicht überprüft und daher seinen Wert nicht für selbstverständlich halten.

So ist der Tiger-222-Option scheint die beste Chance zu sein, den realen Wert zu erhalten:

<?php 
    $finfo = finfo_open(); 
    $fileinfo = finfo_file($finfo, $file, FILEINFO_MIME); 
    finfo_close($finfo); 
?>