基于阿里云 大文件分片上传oss + layui + js版本:

Html部分

<div class="layui-form-item vedio">

   <label class="layui-form-label">作品视频</label>

   <div class="layui-upload-drag" >

      <div id="warm_up">

      </div>

  <div id="warm_up_video">

    </div>

    </div>

 </div>

<div class="layui-form-item works_oss">

   <label class="layui-form-label">作品附件</label>

   <div class="layui-input-block">

       <span class="uploadtext" id="file">上传作品</span>

   </div>

   <div class="layui-input-block">

         <span style="color: #ccc">上传文件格式为zip或rar</span>

   </div>

   <div class="layui-input-block" id="spiacltable">

   </div>

 </div>

Js部分:

//初始化上传组件

upload.render({

  elem: '',//上传按钮id值或者class值

  size: "1048576",//限制上传大小1G

  exts:"mp4|MP4",//限制上传文件大小

  url: "/",//文件上传地址

  auto: false,

  choose: function(obj) {

      var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列

      //上传视频动画效果

      layer.load(2,{

      shade: [0.5, 'gray'],

      success: function (layero) {

      layero.find('.layui-layer-content').css({

          'padding-left':'5px',

          'padding-top': '39px',

          'width': '160px'

          });

        }

      });

      //分片上传

      uploader = createUploader();

      Var file_progress_key= ['file_name','file_type','file_size','file_progress'];

      var file_progress_value = [];

      for (var index in files) {

          var str = files[index].name;

          var arr = str.split('.'); //注split可以用字符或字符串分割

          var my = arr[0]; //这就是要取得的图片名称

          file_progress_value[0] = my;

          file_progress_value[1] = '视频';

          file_progress_value[2] = conversion(files[index].size);

          file_progress_value[3] = '0%';

          $("#title").val(my);

          uploader.addFile(files[index], null, null, null, '{"Vod":{}}');

          uploader.startUpload();

       }

          set_value(file_progress_key,file_progress_value)

          table.init('upload_table', {});

          $('.upload_box').html('<button class="layui-btn upload_video" type="button">添加文件</button>');

     do_upload = true;

     return false;

},

    done: function(res, index, upload) {

}

});

function createUploader() {

   var aliVideoId = '';

   var uploader = new AliyunUpload.Vod({

   timeout: 60000,

   partSize: 1048576,

   parallel: 5,

   retryCount: 3,

   retryDuration: 2,

   userId: '31846838',

   onUploadstarted: function(uploadInfo) {

       if (!uploadInfo.videoId) {

          var title = $('#title').val();

          $.post('上传地址', {

              title: title,

              filename: uploadInfo.file.name

          }, function(suc) {

             if (suc.code == 0) {

                 uploader.setUploadAuthAndAddress(uploadInfo, suc.data.UploadAuth, suc.data.UploadAddress, suc.data.VideoId);

             } else {

                 layer.msg(suc.msg, {

                     icon: 2

                 })

             }

          }, 'json')

        } else {

            // 如果videoId有值,根据videoId刷新上传凭证

           var refreshUrl = '刷新凭证地址' + uploadInfo.videoId

           $.get(refreshUrl, function(data) {

               if (data.Message) {

                   layer.msg('上传失败', {

                   icon: 2

               });

$('#form-member-add').hide();

var list = uploader.listFiles();

    for (var index in list) {

        uploader.deleteFile(index);

     }

var list = uploader.listFiles();

        return;

} else {

     var uploadAuth = data.UploadAuth

     var uploadAddress = data.UploadAddress

     var videoId = data.VideoId

                                uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId)

         }

      }, 'json')

  }

},

// 文件上传成功

onUploadSucceed: function(uploadInfo) {

    console.log(uploadInfo);

    layer.closeAll('loading'); //关闭loading

    aliVideoId = uploadInfo.videoId;

    $('#warm_up_video').removeClass('layui-hide');

    $("input[name=warm_up_video]").val(aliVideoId);

    filename = uploadInfo.file.name;

    $("input[name=vedio_name]").val(filename);

    layer.msg("上传成功");

 },

// 文件上传失败

onUploadFailed: function(uploadInfo, code, message) {

   layer.msg("上传失败");

},

// 文件上传进度,单位:字节, 可以在这个函数中拿到上传进度并显示在页面上

onUploadProgress: function(uploadInfo, totalSize, progress) {

    var progressPercent = Math.ceil(progress * 100)

    var file_progress_key = ['file_progress'];

    var file_progress_value = [progressPercent + '%'];

    set_value(file_progress_key,file_progress_value)

    table.init('upload_table', {});

 },

// 上传凭证超时

onUploadTokenExpired: function(uploadInfo) {

     var refreshUrl = '刷新凭证地址' + uploadInfo.videoId

    $.get(refreshUrl, function(data) {

    var uploadAuth = data.UploadAuth

    uploader.resumeUploadWithAuth(uploadAuth)

 }, 'json')

},

// 取消文件上传

onUploadCanceled: function(uploadInfo, code, message) {},

     // 全部文件上传结束

     onUploadEnd: function(uploadInfo) {}

 })

    return uploader

 }

function conversion(v){

   var num = Number(v);

   var res = 0;

   if(num >= 1048576){

      //M为单位

      res = Math.floor((num / 1048576) * 100) / 100;

      res = res + 'M';

   }else{

      //kd单位

      res = Math.floor((num / 1024) * 100) / 100;

      res = res + 'kb';

      }

    return res;

  }

function set_value(key,value){

    for(var i in key){

         $('.'+key[i]).text(value[i])

     }

  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340