php实现视频上传
PHP实现视频上传的方法
创建HTML表单
在HTML中创建一个表单,用于用户选择并上传视频文件。确保表单的enctype属性设置为multipart/form-data,以便支持文件上传。
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="video" accept="video/*">
<input type="submit" value="上传视频">
</form>
处理文件上传的PHP脚本
在服务器端创建一个PHP脚本(如upload.php)来处理上传的视频文件。脚本需要检查文件类型、大小,并将其移动到指定目录。
<?php
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["video"]["name"]);
$uploadOk = 1;
$videoFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
// 检查是否为视频文件
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["video"]["tmp_name"]);
if($check !== false) {
echo "文件不是视频格式。";
$uploadOk = 0;
}
}
// 检查文件大小(限制为50MB)
if ($_FILES["video"]["size"] > 50000000) {
echo "文件过大,最大支持50MB。";
$uploadOk = 0;
}
// 允许的视频格式
if($videoFileType != "mp4" && $videoFileType != "avi" && $videoFileType != "mov") {
echo "仅支持MP4, AVI, MOV格式的视频。";
$uploadOk = 0;
}
// 检查上传状态
if ($uploadOk == 0) {
echo "文件未上传。";
} else {
if (move_uploaded_file($_FILES["video"]["tmp_name"], $targetFile)) {
echo "文件上传成功: " . htmlspecialchars(basename($_FILES["video"]["name"]));
} else {
echo "上传过程中发生错误。";
}
}
?>
设置服务器目录权限
确保服务器上的上传目录(如uploads/)具有写入权限。可以通过FTP或SSH修改目录权限。
chmod 755 uploads/
安全性增强
为增强安全性,可以生成唯一的文件名,避免文件名冲突或恶意文件上传。
$targetFile = $targetDir . uniqid() . '.' . $videoFileType;
文件类型验证
使用mime_content_type或finfo_file函数进一步验证文件类型,确保上传的是视频文件。
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES["video"]["tmp_name"]);
finfo_close($finfo);
if (strpos($mime, 'video/') === 0) {
// 是视频文件
} else {
echo "无效的视频文件格式。";
$uploadOk = 0;
}
数据库记录(可选)
如果需要记录上传的视频信息,可以将文件路径、文件名等信息存储到数据库中。
// 假设已连接数据库
$stmt = $pdo->prepare("INSERT INTO videos (filename, path) VALUES (?, ?)");
$stmt->execute([basename($_FILES["video"]["name"]), $targetFile]);
通过以上步骤,可以实现一个基本的视频上传功能,同时兼顾安全性和用户体验。







