如何使用php检查上传的文件是图像还是视频?

时间:2014-04-01 07:29:23

标签: image file video

我已经使用此代码处理上传的多张图片。我也想上传和处理视频。如何检查上传的文件是图像还是视频?请注意,我想处理多个视频文件。

<?php
include('selectdb2.php');

if($_SERVER['REQUEST_METHOD'] == "POST")
    if(isset($_FILES['file']))
    {
        $count = 0;
        $errors= array();

        foreach($_FILES['file']['tmp_name'] as $key => $tmp_name )
        {
            $file_name = $key.$_FILES['file']['name'][$key];
            $file_size =$_FILES['file']['size'][$key];
            $file_tmp =$_FILES['file']['tmp_name'][$key];
            $file_type=$_FILES['file']['type'][$key];  

            $enc_id= $_POST['form_id'].$_POST['name3'];
            $md5folder = md5($enc_id); 
            $upload_path ="uploads/".$md5folder;

            if(!is_dir($upload_path))
            {
                mkdir($upload_path, 0777, true);
            }

            if(empty($errors)==true)
            {
                move_uploaded_file($file_tmp,$upload_path.'/'.$file_name);
            }

        }
.....
.....
?>

1 个答案:

答案 0 :(得分:0)

您必须检查文件名的扩展名,因为您不能信任上传文件的内容类型。它可以欺骗客户。因此,您可以创建数组列表 - 也称为白名单 - 用于图像和视频的扩展名列表。

例如:

$allowed =  array('gif','png' ,'jpg');
$filename = $_FILES['video_file']['name'];
$ext = pathinfo($filename, PATHINFO_EXTENSION);
if(!in_array($ext,$allowed) ) {
    echo 'error';
}