2013-12-14 38 views
0

如何讓用戶將各種視頻文件上傳到public_html?我使用這段代碼,但它只允許我上傳mp4視頻,而不是mov或3gp。我怎樣才能得到它的工作將各種視頻文件上傳到public_html

這裏是我的代碼:

<?php 
include('config.php'); 
$allowedExts = array("jpg", "jpeg", "gif", "png", "mov", "mp4", "3gp", "ogg"); 
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); 

if ((($_FILES["file"]["type"] == "video/mov") 
|| ($_FILES["file"]["type"] == "video/mp4") 
|| ($_FILES["file"]["type"] == "video/3gp") 
|| ($_FILES["file"]["type"] == "video/ogg") 
|| ($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/png")) 

&& ($_FILES["file"]["size"] < 999999999) 
&& in_array($extension, $allowedExts)) 

{ 
if ($_FILES["file"]["error"] > 0) 
{ 
echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
} 
else 
{ 
echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
echo "Size: " . ($_FILES["file"]["size"]/999999999) . " Kb<br />"; 
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 

if (file_exists("upload/" . $_FILES["file"]["name"])) 
    { 
    echo $_FILES["file"]["name"] . " already exists. "; 
    } 
else 
    { 
    move_uploaded_file($_FILES["file"]["tmp_name"], 
    "upload/" . $_FILES["file"]["name"]); 
    // If file has uploaded successfully, store its name in data base 

    echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
    } 
    } 
    } 
    else 
    { 
    echo "Invalid file"; 
    } 
    ?> 
+0

有這麼多的安全漏洞,這是可怕的。 –

回答

1

您可以檢查MIME_TYPE即上傳文件的密鑰type中報告;和
不是檢查ACH個人型比賽反對所有視頻:像這樣

if ((($_FILES["file"]["type"] == "video/mov") 
|| ($_FILES["file"]["type"] == "video/mp4") 
|| ($_FILES["file"]["type"] == "video/3gp") 
|| ($_FILES["file"]["type"] == "video/ogg") 
|| ($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/png")) 

&& ($_FILES["file"]["size"] < 999999999) 
&& in_array($extension, $allowedExts)) 

RegEx比賽:
因此,改變這種

if(preg_match('#^video/.*$#',$_FILES["file"]["type"]) && ($_FILES["file"]["size"] < 999999999) 
1

使用正確的MIME類型名稱:

Video Type   Extension MIME Type 
Flash    .flv   video/x-flv 
MPEG-4    .mp4   video/mp4 
iPhone Index  .m3u8  application/x-mpegURL 
iPhone Segment  .ts   video/MP2T 
3GP Mobile   .3gp   video/3gpp 
QuickTime   .mov   video/quicktime 
A/V Interleave  .avi   video/x-msvideo 
Windows Media  .wmv   video/x-ms-wmv 

(來源:http://www.encoding.com/help/article/correct_mime_types_for_serving_video_files

0

增加從您的php.ini文件大小允許文件,然後檢查可能是默認8MB

檢查$ _FILES [「file」] [「error」]中的錯誤代碼。值1表示文件大於允許的文件大小(來自php.ini)。