php实现上传视频文件
上传视频文件的基本步骤
创建一个HTML表单,设置enctype为multipart/form-data,允许文件上传。表单中需要包含一个<input type="file">元素。
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="videoFile">
<input type="submit" value="Upload Video">
</form>
处理上传的PHP脚本
在服务器端创建一个PHP脚本(如upload.php)来处理上传的文件。使用$_FILES超全局变量获取上传的文件信息。
<?php
$targetDir = "uploads/";
$targetFile = $targetDir . basename($_FILES["videoFile"]["name"]);
$uploadOk = 1;
$videoFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
检查文件类型和大小
验证文件是否为视频格式,并检查文件大小是否在允许范围内。
$allowedTypes = array("mp4", "avi", "mov", "wmv");
if (!in_array($videoFileType, $allowedTypes)) {
echo "Sorry, only MP4, AVI, MOV, and WMV files are allowed.";
$uploadOk = 0;
}
if ($_FILES["videoFile"]["size"] > 50000000) { // 50MB limit
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
检查文件是否已存在
避免覆盖服务器上已有的同名文件。
if (file_exists($targetFile)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
移动上传的文件
如果所有检查都通过,将文件从临时目录移动到目标目录。
if ($uploadOk == 1) {
if (move_uploaded_file($_FILES["videoFile"]["tmp_name"], $targetFile)) {
echo "The file " . htmlspecialchars(basename($_FILES["videoFile"]["name"])) . " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
设置文件上传限制
在php.ini中调整以下参数以支持大文件上传:
upload_max_filesize = 100M
post_max_size = 100M
max_execution_time = 300
安全性考虑
确保上传目录不可执行,并对文件名进行清理,防止路径遍历攻击。
$targetFile = $targetDir . uniqid() . '.' . $videoFileType;
使用第三方库处理视频
如果需要更复杂的视频处理(如转码或缩略图生成),可以使用FFmpeg等工具。
exec("ffmpeg -i " . escapeshellarg($targetFile) . " output.mp4");






