当前位置:首页 > PHP

php实现视频上传

2026-02-27 15:40:54PHP

视频上传功能实现

PHP实现视频上传需要处理文件接收、格式验证、存储路径设置以及可能的数据库记录。以下是具体实现方法:

创建HTML表单

前端表单需设置enctype="multipart/form-data"以支持文件上传:

<form action="upload.php" method="post" enctype="multipart/form-data">
    <input type="file" name="videoFile" accept="video/*">
    <input type="submit" value="上传">
</form>

服务器端处理(upload.php)

<?php
// 定义允许的视频格式
$allowedTypes = ['video/mp4', 'video/quicktime', 'video/x-msvideo'];

// 检查文件是否上传成功
if ($_FILES['videoFile']['error'] !== UPLOAD_ERR_OK) {
    die("上传失败,错误代码:" . $_FILES['videoFile']['error']);
}

// 验证文件类型
$fileType = $_FILES['videoFile']['type'];
if (!in_array($fileType, $allowedTypes)) {
    die("仅支持MP4、MOV、AVI格式视频");
}

// 设置存储路径
$uploadDir = 'uploads/videos/';
if (!is_dir($uploadDir)) {
    mkdir($uploadDir, 0755, true);
}

// 生成唯一文件名
$extension = pathinfo($_FILES['videoFile']['name'], PATHINFO_EXTENSION);
$filename = uniqid() . '.' . $extension;
$destination = $uploadDir . $filename;

// 移动临时文件到永久目录
if (move_uploaded_file($_FILES['videoFile']['tmp_name'], $destination)) {
    echo "视频上传成功";
    // 可在此处添加数据库记录代码
} else {
    echo "文件保存失败";
}
?>

安全增强措施

增加文件大小限制(在php.ini或脚本中设置):

ini_set('upload_max_filesize', '100M');
ini_set('post_max_size', '110M');

验证文件内容而非仅依赖扩展名:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['videoFile']['tmp_name']);
finfo_close($finfo);
if (!in_array($mime, $allowedTypes)) {
    die("文件内容与类型不匹配");
}

数据库记录(可选)

如需记录上传信息到MySQL数据库:

$pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
$stmt = $pdo->prepare("INSERT INTO videos (filename, path, size, upload_date) VALUES (?, ?, ?, NOW())");
$stmt->execute([
    $filename,
    $destination,
    $_FILES['videoFile']['size']
]);

注意事项

  • 确保服务器uploads/videos/目录有写入权限
  • 生产环境应添加CSRF防护
  • 大文件上传需调整PHP配置和服务器超时设置
  • 建议添加病毒扫描功能

以上代码实现了基础视频上传功能,可根据实际需求扩展更多特性如进度显示、分片上传等。

php实现视频上传

标签: 上传视频
分享给朋友:

相关文章

vue视频怎么实现

vue视频怎么实现

Vue 视频实现方法 在 Vue 中实现视频功能可以通过多种方式完成,以下是常见的几种方法: 使用 HTML5 <video> 标签 在 Vue 组件模板中直接使用 HTML5 的…

vue实现视频通话

vue实现视频通话

Vue实现视频通话的方法 使用WebRTC技术 WebRTC是一种支持浏览器之间实时通信的技术,无需插件即可实现视频通话。Vue可以结合WebRTC的API实现视频通话功能。 安装必要的依赖库:…

vue webrtc实现视频

vue webrtc实现视频

Vue 与 WebRTC 实现视频通信 WebRTC(Web Real-Time Communication)是一种支持浏览器实时音视频通信的技术。结合 Vue.js 框架,可以快速构建视频通话应用。…

php实现视频上传

php实现视频上传

视频上传功能实现 使用PHP实现视频上传功能需要处理文件接收、验证、存储等步骤。以下是具体实现方法: 创建HTML表单 前端表单需要设置enctype="multipart/form-data"以支…

vue实现上传视频

vue实现上传视频

使用 <input type="file"> 实现基础上传 通过 HTML 原生文件选择控件获取视频文件,结合 Vue 处理上传逻辑。 <template> <…

vue实现录制视频

vue实现录制视频

实现视频录制的基本步骤 使用Vue实现视频录制需要结合浏览器的MediaDevices API和MediaRecorder API。以下是一个完整的实现方案: 安装必要依赖 在Vue项目中安装vue…