ThinkPHP实现JavaScript上传大视频到七牛云实例

原文链接:http://blog.51cto.com/14210437/2357624
1.通过Composer安装七牛云PHP SDK,官方文档https://developer.qiniu.com/kodo/sdk/1283/javascript
2.后端核心代码如下:

use Qiniu\Auth;
//获取图片URL
    public function qiniu_upload(){
        set_time_limit(120);
        ini_set('memory_limit','2000M');

        $setting = C('UPLOAD_SITEIMG_QINIU');
        $upload = new \Think\Upload($setting);// 实例化上传类
        
        // $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     11314572800 ;// 设置附件上传大小
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg',"RM","RMVB","AVI","WMV","MPG ","MPEG","FLV","3GP","MP4","SWF","ASF","DIVX","XVID","3GP2","FLV1","MPEG1","MPEG2","MPEG3","MPEG4","H264",'rm','rmvb','avi','wmv','mpg','mpeg','flv','3gp','mp4','swf','asf','divx','xvid','3gp2','flv1','mpeg1','mpeg2','mpeg3','mpeg4','h264');// 设置附件上传类型
        $upload->rootPath  =     './Uploads/file/'; // 设置附件上传根目录
        $upload->savePath  =     'lxsw/'; // 设置附件上传(子)目录
        // 上传文件
        $info   = $upload->uploadOne($_FILES['file']);
        // var_dump($info);exit;
        // M('boss')->where('id='.$bid)->setInc('neicun_shiyong',$_FILES['logo']['size']);
        if ($info){
            $return = codemsg(3);
            $return['data'] = $info['url'];
            echo json_encode($return);exit;
        }else{
            $return = codemsg(-18);
            $return['data'] = $upload->getError();
            echo json_encode($return);exit;
        }
    }

3.前端上传组件使用plupload,官方下载地址https://www.plupload.com/
4.选择一款想用的demo,核心代码如下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>


<!-- production -->
<script type="text/javascript" src="../js/plupload.full.min.js"></script>
<link rel="stylesheet" href="../js/jquery.plupload.queue/css/jquery.plupload.queue.css" type="text/css" media="screen" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript" src="../js/plupload.full.min.js"></script>
<script type="text/javascript" src="../js/jquery.plupload.queue/jquery.plupload.queue.js"></script>
<div>

<label class="col-sm-2 col-sm-2 control-label">上传七牛云</label>
        <div class="col-sm-10">
                <div id="uploader" style="width: 60%;">
                        <p>Your browser doesn't have Flash, Silverlight or HTML5 support.</p>
                </div>
        </div>
</div>
</div>
<script type="text/javascript">
    // $(function() {
 
    // Setup html5 version
    $("#uploader").pluploadQueue({
        // General settings
        runtimes : 'html5,flash,silverlight,html4',
        url : 'http://www.lianxiang.com/Api/Test/qiniu_upload',//对应后端方法
        chunk_size: '400mb',//分片上传
        rename : true,
        dragdrop: true,
        filters : {
            // Maximum file size
            max_file_size : '500mb',
            // Specify what files to browse for
            mime_types: [
                {title : "Image files", extensions : "jpg,gif,png,mp4"},
                {title : "Zip files", extensions : "zip"}
            ]
        },
        // Resize images on clientside if we can
        resize : {width : 320, height : 240, quality : 90},
        flash_swf_url : '__PUBLIC__/js/Moxie.swf',//引入js路径
        silverlight_xap_url : '__PUBLIC__/js/Moxie.xap',//引入js路径
        init: {
            FileUploaded:function(up,file,result){
                console.log(result);
                alert('上传成功');
            }
        }
    });


</script>

转载于 https://blog.csdn.net/weixin_34228617/article/details/93033483

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以按照以下步骤来实现利用thinkphp5来上传视频到服务器: 1. 在你的项目中安装文件上传组件,比如 `thinkphp/file` 组件,可以使用以下命令进行安装: ``` composer require topthink/think-file ``` 2. 在你的控制器中编写上传方法,可以参考以下代码: ``` public function upload() { // 获取上传文件 $file = request()->file('video'); // 移动到框架应用根目录/public/uploads/video/ 目录下 $info = $file->move(ROOT_PATH . 'public' . DS . 'uploads' . DS . 'video'); if ($info) { // 成功上传后 获取上传信息 $file_path = $info->getRealPath(); $file_name = $info->getFilename(); $file_size = $info->getSize(); // TODO: 将文件信息保存到数据库中 return json([ 'code' => 0, 'msg' => '上传成功!', 'data' => [ 'file_path' => $file_path, 'file_name' => $file_name, 'file_size' => $file_size ] ]); } else { // 上传失败获取错误信息 return json([ 'code' => -1, 'msg' => $file->getError() ]); } } ``` 3. 在你的视图文件中添加上传表单,可以参考以下代码: ``` <form class="layui-form" enctype="multipart/form-data"> <div class="layui-form-item"> <label class="layui-form-label">上传视频</label> <div class="layui-input-block"> <input type="file" name="video" class="layui-upload-file"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button type="button" class="layui-btn" lay-submit lay-filter="upload"> 上传 </button> </div> </div> </form> ``` 4. 编写 JavaScript 代码来实现上传功能,可以参考以下代码: ``` layui.use(['form', 'upload'], function() { var form = layui.form; var upload = layui.upload; // 视频上传 upload.render({ elem: '.layui-upload-file', url: '<?php echo url("upload"); ?>', accept: 'video', size: 10240, before: function(obj) { // TODO: 上传前的处理 }, done: function(res) { if (res.code == 0) { // TODO: 上传成功后的处理 } else { // TODO: 上传失败后的处理 } }, error: function() { // TODO: 上传出错后的处理 } }); }); ``` 这样,你就可以利用thinkphp5来上传视频到服务器了。需要注意的是,如果你上传的是大文件,可以考虑使用分片上传的方式来提高上传速度和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值