将各种视频文件上传到public_html

How can I allow users to upload every kind of video file to public_html? I'm using this code but it only allows me to upload mp4 video and not mov or 3gp. How can I get it to work

Here is my code:

<?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";
  }
  ?>

You can check MIME_TYPE that is reported in type key of uploaded file;
And instead of checking ach individual type match against all videos:
So, change this:

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))

to a RegEx match like this:

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

Use the correct MIME type name:

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

(Source: http://www.encoding.com/help/article/correct_mime_types_for_serving_video_files)

increase your allowed file size from php.ini file and then check may be it is 8MB by default

Check the error code from $_FILES["file"]["error"]. The value 1 means the file is larger than the allowed file size (from php.ini).