首页 文章

php上传不识别.flv和f4v扩展名

提问于
浏览
5

我有一个上传视频的页面,我希望文件类型是mp4 flash和webm文件 . 所有的mp4扩展文件和webm文件工作正常,但flash文件(.flv和.f4v)无法识别,因此php返回值'application / octet-stream',我认为这是任何文件的默认MIME认识到了 . 有没有比这个代码更好的方法来识别真正的MIMES(video / x-flv和video / x-f4v)的flash文件?

$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";

2 回答

  • 2

    也许你可以试试这段代码:

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

    here所述,您将需要PHP> = 5.3.0,这是一个问题吗?

    Another idea 可能是检查数据签名(见there):

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

    看一下php文档中$ _FILES ['userfile'] ['type']的描述,我们可以看到:

    文件的mime类型,如果浏览器提供此信息 . 一个例子是“image / gif” . 但是,在PHP端没有检查这个mime类型,因此不会将其值视为理所当然 .

    所以Tiger-222选项似乎是获得真正 Value 的最佳机会:

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

相关问题