上传文件到七牛

有两个地方需要自己配置一下

token是根据后台的url获取到的

bucket域名,是你注册七牛时的域名

可以点击上传,可以拖拽上传

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    #conID{
      width: 400px;
      height: 300px;
      border: 1px solid pink;
    }
    #clickID{
      padding: 10px 20px;
      background: pink;
      border: none;
      color: #fff;
      border-radius: 6px;
      margin: 0 0 30px 0;
    }
  </style>
</head>
<body>
  <button id="clickID">点击</button>
  <div id="conID">

  </div>
  <script src="jquery.js"></script>
  <script type="text/javascript" src="http://cdn.staticfile.org/plupload/2.1.1/moxie.js"></script>
  <script type="text/javascript" src="http://cdn.staticfile.org/plupload/2.1.1/plupload.dev.js"></script>
  <script type="text/javascript" src="qiniu.js"></script>
  <script>
  var obj = {
    filename:new Date().getTime(),
    clickID:'clickID',
    conID:'conID'
  };
  reqGetQiniuToken(obj);
  function reqGetQiniuToken(obj) {
    var param = {
      "filename":obj.filename
    }
    console.log(filename);
    $.ajax({
      type:'POST',
      data:param,
      url:获取token的url,
      success:function(resultvalue) {
        if (resultvalue.code == 0) {
            console.log(resultvalue.data);
            setupQiniuUploader(resultvalue.data,filename);
        }
      },
      error:function () {
        console.error();
      }
    });
  }

  function setupQiniuUploader(token,obj) {
    /* 七牛*/
      var uploader = Qiniu.uploader({
        runtimes: 'html5,flash,html4',      // 上传模式,依次退化
        browse_button: obj.clickID,         // 上传选择的点选按钮,必需
        // 在初始化时,uptoken,uptoken_url,uptoken_func三个参数中必须有一个被设置
        // 切如果提供了多个,其优先级为uptoken > uptoken_url > uptoken_func
        // 其中uptoken是直接提供上传凭证,uptoken_url是提供了获取上传凭证的地址,如果需要定制获取uptoken的过程则可以设置uptoken_func
        uptoken : token, // uptoken是上传凭证,由其他程序生成
        // uptoken_url: '/uptoken',         // Ajax请求uptoken的Url,强烈建议设置(服务端提供)
        // uptoken_func: function(){    // 在需要获取uptoken时,该方法会被调用
        //    // do something
        //    return uptoken;
        // },
        get_new_uptoken: false,             // 设置上传文件的时候是否每次都重新获取新的uptoken
        // downtoken_url: '/downtoken',
        // Ajax请求downToken的Url,私有空间时使用,JS-SDK将向该地址POST文件的key和domain,服务端返回的JSON必须包含url字段,url值为该文件的下载地址
        // unique_names: true,              // 默认false,key为文件名。若开启该选项,JS-SDK会为每个文件自动生成key(文件名)
        // save_key: true,                  // 默认false。若在服务端生成uptoken的上传策略中指定了sava_key,则开启,SDK在前端将不对key进行任何处理
        domain: 'bucket域名',     // bucket域名,下载资源时用到,必需  
        container: obj.conID,             // 上传区域DOM ID,默认是browser_button的父元素
        max_file_size: '100mb',             // 最大文件体积限制
        flash_swf_url: '../js/plupload/Moxie.swf',  //引入flash,相对路径
        max_retries: 1,                     // 上传失败最大重试次数
        dragdrop: true,                     // 开启可拖曳上传
        drop_element: obj.conID,          // 拖曳上传区域元素的ID,拖曳文件或文件夹后可触发上传
        chunk_size: '4mb',                  // 分块上传时,每块的体积
        auto_start: true,                   // 选择文件后自动上传,若关闭需要自己绑定事件触发上传
        filters : {
        mime_types : [ //只允许上传图片和视频(mp4格式)
          {
            title : "Image files",
            extensions : "jpg,gif,png"
          },{
        title:'Video',
        extensions:'mp4'
      }
]
         },
        init: {
            'FilesAdded': function(up, files) {
                plupload.each(files, function(file) {
                    // 文件添加进队列后,处理相关的事情
                });
            },
            'BeforeUpload': function(up, file) {
              console.log(up,file);
                   // 每个文件上传前,处理相关的事情
            },
            'UploadProgress': function(up, file) {
                   // 每个文件上传时,处理相关的事情
            },
            'FileUploaded': function(up, file, info) {
              console.log(up,file,info);

                   // 每个文件上传成功后,处理相关的事情
                   // 其中info是文件上传成功后,服务端返回的json,形式如:
                   // {
                   //    "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
                   //    "key": "gogopher.jpg"
                   //  }
                   // 查看简单反馈
                   var domain = up.getOption('domain');
                   var sourceLink = domain +"/"+ obj.filename;
                   $('#'+obj.conID).html('<img src="'+sourceLink+'" alt="" />');
            获取上传成功后的视频的某一秒的截图:
            sourceLink?vframe/jpg/offset/10/w/640/h/320(10是第10秒的)
},
'Error': function(up, err, errTip) { //上传出错时,处理相关的事情 // console.log(up,err,errTip); console.log('up====',up); console.log('err =====',err); console.log('errTips====',errTip); }, 'UploadComplete': function() { //队列文件处理完毕后,处理相关的事情 }, 'Key': function(up, file) { // 若想在前端对每个文件的key进行个性化处理,可以配置该函数 // 该配置必须要在unique_names: false,save_key: false时才生效 var key = obj.filename; // do something with key here return key } } }); } </script> </body> </html>
原文地址:https://www.cnblogs.com/SunShineM/p/7275079.html