zoukankan      html  css  js  c++  java
  • 七牛云上传视频3

    1、参考七牛云SDK

    1
    2
    3
    4
    5
    6
    # pythonSDK
    https://developer.qiniu.com/kodo/sdk/1242/python
    # JavaScript SDK历史文档1.x
    https://developer.qiniu.com/kodo/sdk/4244/the-javascript-sdk-historical-documents-1-x
    # JavaScript 官方demo
    https://github.com/qiniu/js-sdk/tree/1.x#demo

      

    2、代码

        参考代码:https://gitee.com/edushiyanlou/QiniuUploader

    settings.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 配置模板的路径
    TEMPLATES = [
        {
           'DIRS': [os.path.join(BASE_DIR,'templates')],
        },
    ]
      2、 配置静态目录
     
    # 像ccs和js这些静态文件如果想要使用必须在这里配置路径
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR,'static'),
    )

      

    urls.py 定义总路由

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from django.contrib import admin
    from django.urls import path
    from app01 import views
     
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('uptoken/', views.QNYTokenView.as_view()),
        path('upload/', views.UploadView.as_view()),
        path('vod/', views.VODView.as_view()),
    ]

      

    app01/views.py 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    from django.shortcuts import render,HttpResponse
    from django.views import View
    import json
     
    '''获取上传token'''
    class QNYTokenView(View):
        def get(self,request):
            from qiniu import Auth, put_file, etag
            import qiniu.config
            # 需要填写你的 Access Key 和 Secret Key
            access_key = "PwyTqrclbus4ntRct1o8G2V-qkR1rI7hbd_5Gx29"
            secret_key = "IuvSm1vJh2YUiYWFwV-kGmHAJF9R9iGuH2Q1ifea"
            # 构建鉴权对象
            q = Auth(access_key, secret_key)
            # 要上传的空间
            bucket_name = 'imagesstatic'
            # 生成上传 Token,可以指定过期时间等
            token = q.upload_token(bucket_name, expires=3600)
            return HttpResponse(json.dumps({'uptoken': token}, ensure_ascii=False))
     
    '''上传页面'''
    class UploadView(View):
        def get(self,request):
            return render(request,'upload.html')
     
    '''播放页面'''
    class VODView(View):
        def get(self,request):
            return render(request,'vod.html')

      

    templates/upload.html  上传视频

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    <!doctype html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>js上传文件到七牛</title>
        <style>
            #container{
                200px;
                height:200px;
                border:1px solid #9d9d9d;
                border-radius: 6px;
                margin:50px auto;
                position: relative;
                overflow: hidden;
            }
            .upload-progress{
                100%;
                height:100%;
                position: absolute;
                top:0;
                left:0;
                background: rgba(0,0,0,0.5);
                z-index: 5;
                color:#fff;
                line-height: 200px;
                text-align: center;
                display: none;
            }
            #uploadImage{
                100%;
                height:100%;
                position: absolute;
                top:0;
                left:0;
                z-index: 2;
                text-align: center;
                line-height: 200px;
                cursor: pointer;
            }
            #container img{
                100%;
                position: absolute;
                top:0;
                left:0;
                z-index: 1;
            }
        </style>
    </head>
    <body>
    <div id="container">
        <div id="uploadImage">选择文件</div>
        <div class="upload-progress"></div>
    </div>
    <script src="/static/qiniu.min.js"></script>
    <script src="/static/jquery-1.12.1.min.js"></script>
    <script>
        var uploader = Qiniu.uploader({
            disable_statistics_report: false,                                   // 禁止自动发送上传统计信息到七牛,默认允许发送
            runtimes: 'html5,flash,html4',                                      // 上传模式,依次退化
            browse_button: 'uploadImage',                                       // 上传选择的点选按钮,必需
            container: 'container',                                             // 上传区域DOM ID,默认是browser_button的父元素
            max_file_size: '500mb',                                             // 最大文件体积限制
            flash_swf_url: 'Moxie.swf',                                         // 引入flash,相对路径
            dragdrop: false,                                                    // 关闭可拖曳上传
            chunk_size: '4mb',                                                  // 分块上传时,每块的体积
            multi_selection: !(moxie.core.utils.Env.OS.toLowerCase() === "ios"),
            uptoken_url: 'http://127.0.0.1:8000/uptoken',                                                 // 在初始化时,uptoken,uptoken_url,uptoken_func三个参数中必须有一个被设置,uptoken是上传凭证,由其他程序生成;uptoken_url是提供了获取上传凭证的地址,如果需要定制获取uptoken的过程则可以设置uptoken_func;其优先级为uptoken > uptoken_url > uptoken_func
            //uptoken:'q06bq54Ps5JLfZyP8Ax-qvByMBdu8AoIVJpMco2m:kyTiuN6GBUpfNt1nJIA7C8CCStY=:eyJzY29wZSI6IjEzMTIzMTIzMTIzIiwiZGVhZGxpbmUiOjE1NzY0MTM3MTB9',
            domain: 'redinnovation.s3-cn-north-1.qiniucs.com',               // bucket域名,下载资源时用到,必需
            get_new_uptoken: false,                                              // 设置上传文件的时候是否每次都重新获取新的uptoken
            auto_start: true,                                                   // 选择文件后自动上传,若关闭需要自己绑定事件触发上传
            max_retries: 3,                                                     // 上传失败最大重试次数
            save_key: true,
            resize: {                                                           // 想限制上传图片尺寸,直接用resize这个属性
                 300,
                height: 300
            },
            init: {
                'FilesAdded': function(up, files) {                             // 文件添加进队列后,处理相关的事情
                    plupload.each(files, function(file) {
                        console.log(file)
                    });
                },
                'BeforeUpload': function(up, file) {                            // 每个文件上传前,处理相关的事情
                    console.log("开始上传之前");
                    $(".upload-progress").show();
                },
                'UploadProgress': function(up, file) {                          // 每个文件上传时,处理相关的事情
                    console.log("上传中");
                    $(".upload-progress").html("上传进度:"+file.percent + "%");
                },
                'FileUploaded': function(up, file, info) {                       // 每个文件上传成功后,处理相关的事情
                    console.log("上传成功");
                    console.log(info);
                    //$(".upload-progress").hide();
                    //var img = new Image();                                      //创建一个Image对象,实现图片的预下载
                    //img.src = "http://qiniu.com/"+res.key;
                    //$("#container").append(img);
                },
                'Error': function(up, err, errTip) {
                    console.log("上传出错")
                },
                'UploadComplete': function() {
                    //队列文件处理完毕后,处理相关的事情
                }
            }
        });
    </script>
    </body>
    </html>

      

    templates/vod.html  播放视频

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <!doctype html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>xxx</title>
        <style></style>
    </head>
    <body>
        <div>
            <video id="video"  width="320" height="240" src="http://q5gq3qy79.bkt.clouddn.com/lucclaPl4-Hi4LcepzKNVWpfN4u7" controls="controls" autoplay="autoplay" muted loop="loop" >
                        您的浏览器不支持 video 标签。
             </video>
        </div>
    </body>
    </html>

      

  • 相关阅读:
    POJ 3259 Wormholes【BellmanFord】
    POJ 2960 SNim【SG函数的应用】
    ZOJ 3578 Matrixdp水题
    HDU 2897 邂逅明下【bash博弈】
    BellmanFord 算法及其优化【转】
    【转】几个Java的网络爬虫
    thinkphp 反字符 去标签 自动加点 去换行 截取字符串 冰糖
    php 二维数组转 json文本 (jquery datagrid 数据格式) 冰糖
    PHP 汉字转拼音(首拼音,所有拼音) 冰糖
    设为首页与加入收藏 兼容firefox 冰糖
  • 原文地址:https://www.cnblogs.com/ngngng/p/13817589.html
Copyright © 2011-2022 走看看