2013-10-21 47 views
4

嗨,大家好我創建了我的上傳文件,包含視頻大小和類型驗證。只允許使用webm,mp4和ogv文件類型,最大爲2gb文件大小。我的PHP代碼:PHP視頻上傳和檢查視頻類型

if (isset($_POST['submit'])) 
{ 
    $file_name = $_FILES['file']['name']; 
    $file_type = $_FILES['file']['type']; 
    $file_size = $_FILES['file']['size']; 

    $allowed_extensions = array("webm", "mp4", "ogv"); 
    $file_name_temp = explode(".", $file_name); 
    $extension = end($file_name_temp); 

    $file_size_max = 2147483648; 
    if (!empty($file_name)) 
    { 
     if (($file_type == "video/webm") || ($file_type == "video/mp4") || ($file_type == "video/ogv") && 
      ($file_size < $file_size_max) && in_array($extension, $allowed_extensions)) 
     { 
      if ($_FILES['file']['error'] > 0) 
      { 
       echo "Unexpected error occured, please try again later."; 
      } else { 
       if (file_exists("secure/".$file_name)) 
       { 
        echo $file_name." already exists."; 
       } else { 
        move_uploaded_file($_FILES["file"]["tmp_name"], "secure/".$file_name); 
        echo "Stored in: " . "secure/".$file_name; 
       } 
      } 
     } else { 
      echo "Invalid video format."; 
     } 
    } else { 
     echo "Please select a video to upload."; 
    } 
} 

我的HTML代碼: 「無效的視頻格式」

<form action="upload_file.php" method="post" enctype="multipart/form-data"> 
<input type="file" name="file"><br /> 
<input type="submit" name="submit" value="Submit"> 
</form> 

我'總是得到。我從流行網站下載了webm,mp4和ogv視頻文件來測試我的小上傳腳本。

http://stream.flowplayer.org/bauhaus/624x260.webm 
http://stream.flowplayer.org/bauhaus/624x260.mp4 
http://stream.flowplayer.org/bauhaus/624x260.ogv 

回答

5

您的擴展沒有正確地被驗證..嘗試這個

if (isset($_POST['submit'])) 
{ 
    $file_name = $_FILES['file']['name']; 
    $file_type = $_FILES['file']['type']; 
    $file_size = $_FILES['file']['size']; 

    $allowed_extensions = array("webm", "mp4", "ogv"); 
    $file_size_max = 2147483648; 
    $pattern = implode ($allowed_extensions, "|"); 

    if (!empty($file_name)) 
    { //here is what I changed - as you can see above, I used implode for the array 
     // and I am using it in the preg_match. You pro can do the same with file_type, 
     // but I will leave that up to you 
     if (preg_match("/({$pattern})$/i", $file_name) && $file_size < $file_size_max) 
     { 
      if (($file_type == "video/webm") || ($file_type == "video/mp4") || ($file_type == "video/ogv")) 
      { 
       if ($_FILES['file']['error'] > 0) 
       { 
        echo "Unexpected error occured, please try again later."; 
       } else { 
        if (file_exists("secure/".$file_name)) 
        { 
         echo $file_name." already exists."; 
        } else { 
         move_uploaded_file($_FILES["file"]["tmp_name"], "secure/".$file_name); 
         echo "Stored in: " . "secure/".$file_name; 
        } 
       } 
      } else { 
       echo "Invalid video format."; 
      } 
     }else{ 
      echo "where is my mojo?? grrr"; 
     } 
    } else { 
     echo "Please select a video to upload."; 
    } 
} 
+0

LOL! 「我的mojo?grrr在哪裏?」我會試試這個代碼。 :D –

+0

NP你不應該有任何問題..祝你好運。 – xlordt

+0

嘿,我還是會看到「無效的視頻格式」>。<。 –