PHP视频上传和检查视频类型
我创建了带有视频大小和类型验证的上传文件。只允许使用webm、mp4和ogv文件类型,最大文件大小为2gb。我的php代码:PHP视频上传和检查视频类型,php,html,Php,Html,我创建了带有视频大小和类型验证的上传文件。只允许使用webm、mp4和ogv文件类型,最大文件大小为2gb。我的php代码: if (isset($_POST['submit'])) { $file_name = $_FILES['file']['name']; $file_type = $_FILES['file']['type']; $file_size = $_FILES['file']['size']; $allowed_extensions = arr
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.";
}
}
未正确验证您的扩展。。试试这个
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.";
}
}
if(isset($\u POST['submit']))
{
$file\u name=$\u FILES['file']['name'];
$file\u type=$\u FILES['file']['type'];
$file\u size=$\u FILES['file']['size'];
$allowed_extensions=数组(“webm”、“mp4”、“ogv”);
$file_size_max=2147483648;
$pattern=内爆($allowed_extensions,“|”);
如果(!空($file_name))
{//这里是我所更改的-正如您在上面看到的,我对数组使用了内爆
//我在preg_比赛中使用了它。你可以用file_类型做同样的事情,
//但我会让你决定
if(preg_match(“/({$pattern})$/i”,$file_name)&&$file_size<$file_size_max)
{
如果($file_type==“video/webm”)| |($file_type==“video/mp4”)| |($file_type==“video/ogv”))
{
如果($_FILES['file']['error']>0)
{
echo“出现意外错误,请稍后再试。”;
}否则{
如果(文件_存在(“安全/”$file_名称))
{
echo$file\u name。“已存在。”;
}否则{
移动上传的文件($文件[“文件”][“tmp文件名”],“安全/”$文件名);
echo“存储在:“.secure/”$文件名;
}
}
}否则{
echo“无效的视频格式。”;
}
}否则{
回声“我的魔力在哪里?”;
}
}否则{
echo“请选择要上载的视频。”;
}
}
函数fileSelected(){
var inputs=document.getElementsByClassName('myclass');
var输入=输入[0];
var file=input.files[0];
var name=file.name;
var size=file.size;
var type=file.type;
//警报(“类型:”+类型);
如果(类型!=“视频/mp4”)
{
警报(“选择了不合适的扩展”);
}
push({name:name,size:size});
}
您一定是出了什么问题。。复制并粘贴上面的代码。我对此进行了4次测试,效果良好,同时确保扩展正确。。请务必用小写字母写,以防万一。。虽然这不重要。我复制了你的代码并测试了很多次,仍然得到了“无效视频格式”的人。你可以在这里测试。。如果不起作用,请尝试另一个文件。。可能文件已损坏或某个文件已成功上载。顺便说一句,我在本地(wamp服务器)工作。我也在本地(linux)进行了测试。。尝试打印($\文件)以查看您要获取的类型。
http://stream.flowplayer.org/bauhaus/624x260.webm
http://stream.flowplayer.org/bauhaus/624x260.mp4
http://stream.flowplayer.org/bauhaus/624x260.ogv
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.";
}
}