JS | 七牛云上传图片视频

“无言独上西楼,月如钩,寂寞梧桐深院锁清秋。剪不断,理还乱,是离愁,别是一般滋味在心头。”
—— 题记,引自《相见欢》

正文


最近新写个项目,需要上传视频,用了七牛的JavaScriptSDK,七牛云文档其实讲的很清楚,引用代码记录下。

Paste_Image.png
      var option1 = {
        runtimes: 'html5,flash,html4',
        browse_button: 'pickfiles',
        container: 'container',
        drop_element: 'container',
        max_file_size: '1000mb',
        filters : { mime_types: [ {title: "Video files", extensions : "flv,mpg,mpeg,avi,wmv,mov,asf,rm,rmvb,mkv,m4v,mp4"}] },
        flash_swf_url: '/static/js/Moxie.swf',
        dragdrop: true,
        chunk_size: '4mb',
        multi_selection: false,
        uptoken_func: function(){
          var ajax = new XMLHttpRequest();
          ajax.open('GET', location.origin + '/cloud/video/uploadtoken', false);
          ajax.setRequestHeader("If-Modified-Since", "0");
          ajax.send();
          if (ajax.status === 200) {
            var res = JSON.parse(ajax.responseText);
            console.log(res)
            if (res.data && res.data.video && res.data.video.qiniu) {
              var token = res.data.video.qiniu.upToken; 
              console.log(res.data);
              self.keys = res.data.video.qiniu.key;
              return token;
            }
            return '';
          }
        },
        domain: 'http://video01.jiuyan.info/',
        get_new_uptoken: false,
        auto_start: true,
        log_level: 5,
        init: {
          'FilesAdded': function(up, files) {
            $('table').show();
            plupload.each(files, function(file) {
              var progress = new FileProgress(file, 'fsUploadProgress');
              progress.setStatus("等待...");
              progress.bindUploadCancel(up);
            });
          },
          'BeforeUpload': function(up, file) {
            var progress = new FileProgress(file, 'fsUploadProgress');
            var chunk_size = plupload.parseSize(this.getOption('chunk_size'));
            if (up.runtime === 'html5' && chunk_size) {
                progress.setChunkProgess(chunk_size);
            }
          },
          'UploadProgress': function(up, file) {
            var progress = new FileProgress(file, 'fsUploadProgress');
            var chunk_size = plupload.parseSize(this.getOption('chunk_size'));
            progress.setProgress(file.percent + "%", file.speed, chunk_size);
            console.log(file)
          },
          // 'UploadComplete': function() { $('#success').show(); },
          'FileUploaded': function(up, file, info) {
            // var k = info;
            self.video_info = info;
            var cover_info = $.parseJSON(info)

            // self.data.video_hash = k.hash;
            console.log(info)

            // console.log(info.key)
            // console.log(k.key)

            // console.log(self.data.video_info)

            console.log('success')
            var progress = new FileProgress(file, 'fsUploadProgress');
            progress.setComplete(up, info);
            $('#pickfiles span').html('重新上传')
          },
          'Error': function(up, err, errTip) {
            $('table').show();
            var progress = new FileProgress(err.file, 'fsUploadProgress');
            progress.setError();
            progress.setStatus(errTip);
          },
          'Key': function(up, file) {
            var key = self.keys.shift();
            // do something with key
            return key
          }
        }
      }
      var uploader = Qiniu.uploader(option1);

      uploader.bind('FileUploaded', function() {
        console.log('hello man,a file is uploaded');
      });

      var Qiniu2 = new QiniuJsSDK();
      var option2 = {
        runtimes: 'html5,flash,html4',
        browse_button: 'info-cover',
        container: 'container',
        drop_element: 'container',
        max_file_size: '1000mb',
        filters : { mime_types: [ {title: "Image files", extensions : "jpg,png,jpeg"}] },
        flash_swf_url: '/static/js/Moxie.swf',
        dragdrop: true,
        chunk_size: '4mb',
        multi_selection: false,
        uptoken_func: function(){
          var ajax = new XMLHttpRequest();
          ajax.open('GET', location.origin + '/cloud/video/uploadtoken', false);
          ajax.setRequestHeader("If-Modified-Since", "0");
          ajax.send();
          if (ajax.status === 200) {
            var res = JSON.parse(ajax.responseText);
            if (res.data && res.data.cover && res.data.cover.qiniu) {
              var token = res.data.cover.qiniu.upToken;
              console.log(res.data) 
              self.coverkeys = res.data.cover.qiniu.key;
              return token;
            }
            return '';
          }
        },
        domain: 'http://inimg01.jiuyan.info/',
        get_new_uptoken: false,
        auto_start: true,
        log_level: 5,
        init: {
          'FilesAdded': function(up, files) {
          },
          'BeforeUpload': function(up, file) {
          },
          'UploadProgress': function(up, file) {
          },
          // 'UploadComplete': function() { $('#success').show(); },
          'FileUploaded': function(up, file, info) {
            // var k = info;
            self.cover_info = info;
            console.log(info)
            var result_url = up.getOption('domain') + $.parseJSON(info).key
            document.getElementById('loader-wrap').className = 'loader-wrap'
            var coverWrap = document.getElementById('cover-wrap')
            coverWrap.style.backgroundImage = "url(" + result_url + ")";
            self.isActive = true;
            console.log('success')
          },
          'Error': function(up, err, errTip) {
          },
          'Key': function(up, file) {
            var key = self.coverkeys.shift();
            // // do something with key
            return key
          }
        }
      }
      var uploader2 = Qiniu2.uploader(option2);

      uploader2.bind('FileUploaded', function() {
        console.log('hello man 2,a file is uploaded');
      });

      $('#info-cover').on('click', function(){
        uploader2.start();
      });

参考文章:
https://developer.qiniu.com/kodo/sdk/javascript#8

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,176评论 5 469
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,190评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,232评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,953评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,879评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,177评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,626评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,295评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,436评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,365评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,414评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,096评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,685评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,771评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,987评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,438评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,032评论 2 341