2013-12-14 37 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)。