zoukankan      html  css  js  c++  java
  • 上传文件到七牛

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

    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>
  • 相关阅读:
    day 66 ORM django 简介
    day 65 HTTP协议 Web框架的原理 服务器程序和应用程序
    jQuery的事件绑定和解绑 事件委托 轮播实现 jQuery的ajax jQuery补充
    background 超链接导航栏案例 定位
    继承性和层叠性 权重 盒模型 padding(内边距) border(边框) margin 标准文档流 块级元素和行内元素
    属性选择器 伪类选择器 伪元素选择器 浮动
    css的导入方式 基础选择器 高级选择器
    03-body标签中相关标签
    Java使用内存映射实现大文件的上传
    正则表达式
  • 原文地址:https://www.cnblogs.com/SunShineM/p/7275079.html
Copyright © 2011-2022 走看看