当前位置:首页 > 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数据库:

php实现视频上传

$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配置和服务器超时设置
  • 建议添加病毒扫描功能

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

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

相关文章

vue 实现视频

vue 实现视频

Vue 实现视频播放的方法 在 Vue 中实现视频播放可以通过多种方式完成,常见的有使用 HTML5 的 <video> 标签或第三方库如 video.js。以下是几种实现方法: 使用…

php 实现上传视频

php 实现上传视频

上传视频的基本流程 在PHP中实现视频上传功能需要处理文件接收、验证、存储等步骤。核心是通过$_FILES超全局变量获取上传的文件信息,结合move_uploaded_file函数完成存储。 创建H…

vue实现树形视频

vue实现树形视频

Vue 实现树形视频列表 在 Vue 中实现树形视频列表可以通过递归组件和嵌套数据结构来完成。以下是具体实现方法: 数据结构设计 使用嵌套数组表示视频分类和子视频,每个节点包含 id、name、ch…

vue 实现上传视频

vue 实现上传视频

使用 Vue 实现上传视频功能 在 Vue 中实现上传视频功能,通常需要结合 HTML 的 <input type="file"> 元素和 Vue 的事件处理。以下是具体实现方法: 基本…

vue实现视频直播

vue实现视频直播

Vue 实现视频直播的方法 使用 video.js 和 HLS 协议 安装 video.js 和 videojs-contrib-hls 插件: npm install video.js video…

vue实现录制视频

vue实现录制视频

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