layui框架实战案例(5):基于PHP后端的layUI上传视频到七牛云对象储存并自动转码

简介: layui框架实战案例(5):基于PHP后端的layUI上传视频到七牛云对象储存并自动转码

七牛云配置

先在七牛云申请账户及accessKey信息,保存为数组文件,方便后期调用

  // +----------------------------------------------------------------------
  // | 七牛云设置
  // +----------------------------------------------------------------------
  //七牛云appid
  'qn_accessKey' => 'idaqr1_NoVpXmz...',
  //七牛云appSecret
  'qn_secretKey' => 'y6J4dIkqHC...',
  //七牛储存外链地址;
  'qn_url' => 'http://heart.***.net/',
  //七牛存储空间列表;
  'qn_bucket' => 'heart',
  //七牛私有队列;
  'qn_pipeline' => 'chalu',


引入七牛云依赖包

开发文档及下载地址参见:https://developer.qiniu.com/kodo/sdk/1241/php


前端上传按钮



HTML代码:

        <div class="weui-form__title" style="margin: 10px auto;text-align: center;">
            <button class="layui-btn" id="test3"><i class="layui-icon"></i>上传图片</button>
            <button class="layui-btn" id="test5" style="margin: auto 10px;"><i class="layui-icon"></i>上传视频</button>
        </div>

js代码

        //上传视频至七牛云;
        upload.render({
            elem: '#test5'
            , url: 'safe.php?m=Safe&a=safeUpVideo&act=upVideo&safe_id=' + safe_id
            , accept: 'video' //视频
            , exts: 'mp4|mpg|mov' //只允许上传压缩文件
            , before: function () {
                layer.load();
            }
            , done: function (res) {
                if (res.status != "0") {
                    return layer.msg('上传失败!');
                }
                //上传成功
                if (res.status == "0") {
                    layer.alert(res.err, {icon: 6}, function () {
                        // 获得frame索引
                        var index = parent.layer.getFrameIndex(window.name);
                        //关闭当前frame
                        parent.layer.close(index);
                        //重新加载页面
                        window.parent.location.reload();
                    });
                }
            }
        });
    });

后端处理

封装上传类

<?php
//引入入口文件,并写好相应要使用的模块命名空间
if (!defined('QINIU_ROOT')) {
    define('QINIU_ROOT', dirname(__FILE__) . '/');
    require(QINIU_ROOT . 'qiniu/autoload.php');
}
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
use Qiniu\Storage\BucketManager;
class QINIU
{
    public function upchange($conf_accessKey, $conf_secretKey, $conf_bucket, $conf_pipeline, $filePath, $mediaid)
    {
        //初始化好Auth 类,用于签名的公钥和私钥
        $accessKey = $conf_accessKey;
        $secretKey = $conf_secretKey;
        $auth = new Auth($accessKey, $secretKey);
        $bucket = $conf_bucket;
        //数据处理队列名称,不设置代表不使用私有队列,使用公有队列。
        $pipeline = $conf_pipeline;
        //通过添加'|saveas'参数,指定处理后的文件保存的bucket和key
        //不指定默认保存在当前空间,bucket为目标空间,后一个参数为转码之后文件名
        $savekey = Qiniu\base64_urlSafeEncode($bucket . ':' . $mediaid . '.mp4');
        //设置转码参数
        $fops = "avthumb/mp4/ab/128k/ar/44100/acodec/libfaac/r/30/vb/720k/vcodec/libx264/s/640x360/autoscale/1/stripmeta/0";
        $fops = $fops . '|saveas/' . $savekey;
        if (!empty($pipeline)) {  //使用私有队列
            $policy = array(
                'persistentOps' => $fops,
                'persistentPipeline' => $pipeline
            );
        } else {                  //使用公有队列
            $policy = array(
                'persistentOps' => $fops
            );
        }
        //指定上传转码命令;
        $uptoken = $auth->uploadToken($bucket, null, 3600, $policy);
        $key = $mediaid . '.mp4'; //七牛云中保存的文件名
        $uploadMgr = new UploadManager();
        //上传文件并转码$filePath为本地文件路径;
        list($ret, $err) = $uploadMgr->putFile($uptoken, $key, $filePath);
        if ($err !== null) {
            return false;
        } else {
            return $ret['key'];
        }
    }
}

调用上传类

    //上传视频 by poleng 2020-09-05
    case "upVideo";
        $safe_id = get_param("safe_id");
        $file = $_FILES['file'];
        //处理文件后缀名;
        $ext = explode('.', $_FILES['file']['name']);
        $ext = end($ext);//mp4
        //上传至七牛云并转码;
        require 'libs/QiNiu.php';
        $qiniu = new QINIU;
        //文件随机命名;
        $mediaId = md5(time());
        $fileName = $file['tmp_name'];
        //执行上传操作;
        $qiniu->upchange($CONF['qn_accessKey'], $CONF['qn_secretKey'], $CONF['qn_bucket'], $CONF['qn_pipeline'], $fileName, $mediaId);
        //获取上传七牛云的文件名;
        $videoUrl = $CONF['qn_url'] . $mediaId . "." . $ext;
        //视频入库;
        $up_preview = "upload/video.jpg";
        $up_tpye = "1";
        $up_time = time();
        $db->insert('upfiles', array('safe_id' => $safe_id, 'up_url' => $videoUrl, 'up_preview' => $up_preview, 'up_tpye' => $up_tpye, 'up_time' => $up_time));
        //返回JSON;
        $res['status'] = "0";
        $res['videoUrl'] = $videoUrl;
        $res['err'] = '上传成功!';
        die(json_encode_lockdata($res));
        break;


Done!

相关文章
|
20天前
|
移动开发 小程序 Linux
PHP仿WX即时聊天源码,支持视频语音聊天
PHP仿WX即时聊天源码,支持视频语音聊天
111 65
|
1天前
|
SQL 缓存 PHP
PHP框架详解 - symfony框架
Symfony框架凭借其灵活性、高性能和强大的社区支持,成为PHP开发领域的重要工具。无论是初学者还是资深开发者,都可以通过Symfony快速构建高质量的Web应用程序。通过深入理解Symfony的核心组件和最佳实践,开发者可以充分发挥其优势,提升开发效率和代码质量。
34 24
|
16天前
|
存储 缓存 安全
网安入门之PHP后端基础
PHP 是一种服务器端脚本语言,广泛用于动态网站和Web应用程序开发。其文件扩展名为`.php`,支持嵌入HTML、CSS和JavaScript。PHP代码由Web服务器解析后返回给浏览器。PHP是弱类型语言,变量以`$`开头,支持字符串、整数、浮点数、布尔值、数组、对象等类型。PHP具有跨平台、开源、丰富的扩展库等特点。常用超全局变量如`$_GET`、`$_POST`、`$_SESSION`等处理用户输入和会话数据。HTTP请求方法GET和POST在数据传输方式、长度限制、安全性等方面有显著差异。
网安入门之PHP后端基础
|
19天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
144 18
|
2月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
80 4
|
2月前
|
API PHP 数据库
PHP中哪个框架最适合做API?
在数字化时代,API作为软件应用间通信的桥梁至关重要。本文探讨了PHP中适合API开发的主流框架,包括Laravel、Symfony、Lumen、Slim、Yii和Phalcon,分析了它们的特点和优势,帮助开发者选择合适的框架,提高开发效率、保证接口稳定性和安全性。
94 3
|
2月前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP是一种流行的服务器端脚本语言,自诞生以来在Web开发领域占据重要地位。从简单的网页脚本到支持面向对象编程的现代语言,PHP经历了多次重大更新。本文探讨PHP的现代演进历程,重点介绍其在Web开发中的应用及框架创新,如Laravel、Symfony等。这些框架不仅简化了开发流程,还提高了开发效率和安全性。
42 3
|
2月前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP 自发布以来一直在 Web 开发领域占据重要地位,历经多次重大更新,从简单的脚本语言进化为支持面向对象编程的现代语言。本文探讨 PHP 的演进历程,重点介绍其在 Web 开发中的应用及框架创新。自 PHP 5.3 引入命名空间后,PHP 迈向了面向对象编程时代;PHP 7 通过优化内核大幅提升性能;PHP 8 更是带来了属性、刚性类型等新特性。
43 3
|
2月前
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
77 0

热门文章

最新文章