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 代码
在 upload.php 文件中,检查上传的文件是否存在,并验证文件类型和大小。

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['video'])) {
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES['video']['name']);
$uploadOk = true;
$fileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
// 检查文件是否为视频类型
$allowedTypes = ['mp4', 'avi', 'mov', 'wmv'];
if (!in_array($fileType, $allowedTypes)) {
echo "仅支持 MP4, AVI, MOV, WMV 格式的视频文件。";
$uploadOk = false;
}
// 检查文件大小(例如限制为 100MB)
$maxSize = 100 * 1024 * 1024;
if ($_FILES['video']['size'] > $maxSize) {
echo "文件大小不能超过 100MB。";
$uploadOk = false;
}
// 检查上传是否成功
if ($uploadOk) {
if (move_uploaded_file($_FILES['video']['tmp_name'], $targetFile)) {
echo "视频上传成功: " . htmlspecialchars(basename($_FILES['video']['name']));
} else {
echo "上传失败,请重试。";
}
}
}
?>
安全性增强
为确保上传过程的安全性,可以采取以下措施:
- 生成唯一的文件名,避免文件名冲突或恶意覆盖。
- 限制上传文件的类型和大小。
- 检查文件内容是否确实是视频文件(例如使用
getimagesize或其他工具)。
// 生成唯一文件名
$uniqueName = uniqid() . '.' . $fileType;
$targetFile = $targetDir . $uniqueName;
文件保存目录权限
确保 uploads/ 目录具有写入权限,通常需要设置目录权限为 755 或 777(根据服务器配置调整)。

chmod 755 uploads/
大文件上传处理
如果上传的视频文件较大,可能需要调整 PHP 配置:
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
这些配置可以在 php.ini 文件中修改,或通过 .htaccess 文件设置。
总结
通过以上步骤,可以实现一个基本的视频上传功能。确保对上传的文件进行严格验证,并采取安全措施,以防止恶意文件上传或服务器资源滥用。





