体育直播系统短视频上传流程:七牛云对接的实现思路和核心代码示例

简介: 东莞梦幻网络科技体育直播系统实现短视频上传功能,基于ThinkPHP+MySQL+Redis+七牛云架构。流程包括前端获取上传凭证、客户端上传视频至七牛云、七牛回调服务器验证签名并入库,涵盖上传策略、回调验证与存储路径规范。核心代码展示如何生成上传Token、前端上传及回调处理,确保安全高效上传。

“东莞梦幻网络科技”体育直播系统的短视频上传流程,与七牛云对接的实现思路和核心代码示例,包括上传签名、回调验证和存储路径规范。使用 ThinkPHP + MySQL + Redis + 七牛云架构。


一、上传流程概览

短视频上传涉及三步:前端拿到上传凭证 → 客户端上传视频 → 七牛云回调服务器确认入库。

流程图示意:

  1. 前端请求上传凭证

    • 前端调用接口(/api/video/getUploadToken
    • 后端生成七牛上传凭证(UploadToken),并返回给前端
    • Token 包含上传策略、过期时间、回调 URL 等信息
  2. 客户端上传视频到七牛云

    • 使用七牛官方 SDK 或表单直传
    • 上传时附带上传凭证
  3. 七牛回调服务器

    • 七牛上传完成后调用回调 URL
    • 后端验证签名是否合法(防伪造)
    • 将视频信息写入数据库(路径、大小、用户ID等)
    • 返回 200 OK

二、实现思路

1. 后端生成上传凭证

核心思路

  • 使用七牛云 SDK 生成上传 token
  • 设置上传策略:

    • callbackUrl → 七牛回调 URL
    • callbackBody → 回调参数(文件名、hash、用户ID等)
    • saveKey → 视频存储路径规范(例如 video/{userId}/{yyyyMMdd}/{random}.mp4

ThinkPHP 部分代码(PHP)

use Qiniu\Auth;

class VideoController extends Controller
{
   
    public function getUploadToken()
    {
   
        $accessKey = config('qiniu.accessKey');
        $secretKey = config('qiniu.secretKey');
        $bucket = config('qiniu.bucket');

        $auth = new Auth($accessKey, $secretKey);

        // 存储路径规范
        $userId = session('user_id');
        $saveKey = "video/{$userId}/".date('Ymd')."/\$(fname)";

        $policy = [
            'callbackUrl' => config('app.url').'/api/video/callback',
            'callbackBody' => 'filename=$(fname)&size=$(fsize)&hash=$(etag)&user_id='.$userId,
            'saveKey' => $saveKey
        ];

        $token = $auth->uploadToken($bucket, null, 3600, $policy);

        return json(['uptoken' => $token, 'saveKey' => $saveKey]);
    }
}

2. 前端上传视频

实现思路

  • 用七牛提供的 JS SDK(qiniu-js)和 H5 FormData + Ajax 上传
  • 上传时需附带后端返回的 uptoken
  • 上传完成自动触发七牛回调

部分 JS:

const file = document.getElementById('videoFile').files[0];
const formData = new FormData();
formData.append('file', file);
formData.append('token', uploadToken); // 后端返回的 token

fetch('https://upload.qiniup.com/', {
   
    method: 'POST',
    body: formData
})
.then(res => res.json())
.then(data => {
   
    console.log('上传完成', data);
})
.catch(err => console.error(err));

3. 七牛云回调验证

核心思路

  • 七牛回调会带 Authorization Header
  • 使用七牛 SDK 验证签名是否正确
  • 验证通过后,将视频信息写入数据库

ThinkPHP 部分代码:

use Qiniu\Http\Client;
use Qiniu\Auth;

class VideoController extends Controller
{
   
    public function callback()
    {
   
        $accessKey = config('qiniu.accessKey');
        $secretKey = config('qiniu.secretKey');

        $auth = new Auth($accessKey, $secretKey);

        $body = file_get_contents("php://input");
        $headers = getallheaders();

        if (!$auth->verifyCallback($headers, $body, config('qiniu.callbackUrl'))) {
   
            return json(['status' => 'fail', 'msg' => '签名验证失败'], 403);
        }

        $data = json_decode($body, true);
        $videoData = [
            'user_id' => $data['user_id'],
            'filename' => $data['filename'],
            'hash' => $data['hash'],
            'size' => $data['size'],
            'path' => "https://cdn.example.com/{$data['filename']}",
            'created_at' => time(),
        ];

        db('videos')->insert($videoData);

        return json(['status' => 'success']);
    }
}

4. 存储路径规范

video/{userId}/{yyyyMMdd}/{uuid}.mp4
  • 用户 ID 分类目录
  • 日期目录方便归档和清理
  • 文件名使用原始文件名或 UUID 避免重复
  • CDN 域名访问路径:https://cdn.example.com/video/xxx/xxx.mp4

5. 总结

  1. 前端请求后端获取上传 token(带回调和存储规则)
  2. 前端用 token 上传文件到七牛
  3. 七牛回调后端接口
  4. 后端验证签名 → 写入数据库 → 返回成功
  5. 视频路径规范 + CDN 分发,方便播放和管理
    微信截图_20250820140036.png
相关文章
|
3月前
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
1086 36
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
4月前
|
JSON API 数据格式
深度分析大麦网API接口,用Python脚本实现
大麦网为国内领先演出票务平台,提供演唱会、话剧、体育赛事等票务服务。本文基于抓包分析其非官方接口,并提供Python调用方案,涵盖演出列表查询、详情获取及城市列表获取。需注意非官方接口存在稳定性风险,使用时应遵守平台规则,控制请求频率,防范封禁与法律风险。适用于个人学习、演出信息监控等场景。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
大模型
大模型正重塑数字世界,以千亿级参数和深度学习技术驱动AI革命。它赋能内容生成、智能交互与知识服务,同时带来伦理、隐私与能耗挑战。未来需走向高效、可信、向善的可持续发展之路。
|
4月前
|
Kubernetes 安全 Devops
「迁移急救包」全云平台无缝迁移云效实操手册
阿里云云效是国内领先的一站式DevOps平台,提供代码全生命周期管理、智能化交付流水线及精细化研发管控,支持多种开发场景。本文详细介绍了从其他平台(如Coding)向云效迁移的完整方案,包括代码仓库、流水线、制品仓库及项目数据的迁移步骤,帮助用户实现高效、安全的平滑迁移,提升研发效率与协作能力。
586 29
|
26天前
|
JSON 安全 JavaScript
深入浅出解析 HTTPS 原理
HTTPS是HTTP与SSL/TLS结合的安全协议,通过数字证书验证身份,利用非对称加密安全交换会话密钥,再以对称加密高效传输数据,确保通信的机密性、完整性和真实性。整个过程如同建立一条加密隧道,保障网络交互安全。
520 16
|
4月前
|
消息中间件 NoSQL 关系型数据库
体育直播系统积分流水与风控开发:防刷、防伪与限频实现
本案例分享东莞梦幻网络科技体育直播系统的积分流水与风控策略设计,涵盖防刷、防伪、限频三大层面,结合ThinkPHP+MySQL+Redis+WebSocket技术栈,实现积分透明记录、接口限流、设备识别与行为分析,保障积分系统安全与稳定。
|
3月前
|
XML 测试技术 API
利用C#开发ONVIF客户端和集成RTSP播放功能
利用C#开发ONVIF客户端和集成RTSP播放功能
1514 123
|
4月前
|
存储 JSON 安全
体育直播平台任务模块开发详解:实现签到、分享、邀请注册激励闭环设计思路
本文详解东莞梦幻网络科技体育直播平台的用户任务系统设计,涵盖签到、分享、邀请注册等任务流程,以及积分奖励机制、技术架构与风控策略,展现任务系统如何提升用户活跃与平台增长。
|
3月前
|
NoSQL 数据可视化 安全
如何开发一套车辆管理系统?(附架构图+流程图+代码参考)
本文介绍了如何通过搭建车辆管理系统(VMS)帮助企业摆脱传统管理方式,实现流程化、可视化、合规化和自动化。内容涵盖系统架构、关键功能模块、数据模型、API设计、前后端实现及实施建议,提供可落地的技术方案,助力企业降低隐形成本、提升管理效率与透明度,实现数据驱动决策。
|
3月前
|
机器学习/深度学习 传感器 安全
2025年华为杯E题|高速列车轴承智能故障诊断问题|思路、代码、论文|持续更新中....
2025年华为杯E题|高速列车轴承智能故障诊断问题|思路、代码、论文|持续更新中....
454 0