• 七牛云js直传插件


    作为一个后端能写前端插件就不要要求那么高了,就能上传就差不多了。。。

    直接来代码了,一开始想用javascript直接写的,后来就写着写着就变成混着写了

    先调用jquery

    <script type="text/javascript" src="js/jquery.min.js"></script>

    然后调用七牛的插件

    <script src="/js/tupload9/plupload.full.min.js" ></script>
    <script src="/js/tupload9/qiniu.min.js" ></script>

    最后就开始自己写插件了

    (function($){
    $.fn.qiniuUpload = function(options){
    var defaults={
    //progress:"progress",
    //fill:"fill",
    //filltext:"filltext",
    pickfiles:"pickfiles",//点击触发上传事件
    drop_element:"container",//可拖拽区域
    valueId:"photo",//表单input
    photoshow:"photoshow",//回调显示区域
    uptoken_url:'**********************',
    domain_url:'************',
    maxlength:1,
    }
    options = $.extend(defaults,options);
    var photoshow = document.getElementById(options.photoshow),
    valueId = document.getElementById(options.valueId);
    //progress=document.getElementById(options.progress),
    // fill=document.getElementById(options.fill),
    // filltext=document.getElementById(options.filltext),
    var uploader = Qiniu.uploader({
    runtimes: 'html5,flash,html4', // 上传模式,依次退化
    browse_button: options.pickfiles, // 上传选择的点选按钮,**必需**
    uptoken_url: options.uptoken_url,
    get_new_uptoken: true, // 设置上传文件的时候是否每次都重新获取新的 uptoken
    save_key: true, // 默认 false。若在服务端生成 uptoken 的上传策略中指定了 `sava_key`,则开启,SDK在前端将不对key进行任何处理
    domain: options.domain_url, // bucket 域名,下载资源时用到,**必需**
    container: options.drop_element, // 上传区域 DOM ID,默认是 browser_button 的父元素,
    max_file_size: '4mb', // 最大文件体积限制
    flash_swf_url: 'js/Moxie.swf', //引入 flash,相对路径
    max_retries: 3, // 上传失败最大重试次数
    dragdrop: true, // 开启可拖曳上传
    drop_element: options.drop_element,// 拖曳上传区域元素的 ID,拖曳文件或文件夹后可触发上传
    chunk_size: '4mb', // 分块上传时,每块的体积
    auto_start: true, // 选择文件后自动上传,若关闭需要自己绑定事件触发上传,
    init: {
    'FilesAdded': function(up, files) {
    plupload.each(files, function(file) {
    // 文件添加进队列后,处理相关的事情
    });
    },
    'BeforeUpload': function(up, file) {
    // 每个文件上传前,处理相关的事情
    //console.log(photoshow.getElementsByTagName("li").length);
    if(photoshow.getElementsByTagName("li").length>=options.maxlength){
    showTip("超过最大上传限制")
    return false;
    }
    },
    'UploadProgress': function(up, file) {
    // 每个文件上传时,处理相关的事情
    //console.log(file);
    var load = photoshow.getElementsByTagName("div");
    load[0].style.display = "inline-block";
    if(file && file.percent == 100){
    load[0].style.display = "none";
    }
    // filltext.innerHTML='上传进度:'+file.percent+'%';
    // fill.style.display='inline-block';
    },
    'FileUploaded': function(up, file, info) {
    // 每个文件上传成功后,处理相关的事情
    // 其中 info 是文件上传成功后,服务端返回的json,形式如
    // {
    // state:"1"
    // url:",//p20.jxft.net/180828/1435993_0754005279.jpg--8428364"
    // }
    var domain = up.getOption('domain');
    var data = JSON.parse(info);
    //console.log(data);
    if(data.state>0){
    var split = data.url.split("--");
    var img_url = split[0].substr(1);
    uploadResult(img_url);
    }else{
    showTip(data.msg);
    }
    },
    'Error': function(up, err, errTip) {
    //上传出错时,处理相关的事情
    },
    'UploadComplete': function() {
    //队列文件处理完毕后,处理相关的事情
    // fill.style.animationPlayState="paused"
    //progress.style.display='none';
    },
    'Key': function(up, file) {
    // 若想在前端对每个文件的key进行个性化处理,可以配置该函数
    // 该配置必须要在 unique_names: false , save_key: false 时才生效
    //key就是上传的文件路径
    return key
    }
    }
    });

    function uploadResult(url){
    var photo = valueId.value;
    photo = photo?photo:"";
    photo = photo + ','+url;
    valueId.value = photo;

    var li = document.createElement("li");
    var img = document.createElement("img");
    var em = document.createElement("em");
    var a = document.createElement("a");
    a.href = "javascript:;";
    a.setAttribute("class", "xc_del");
    a.setAttribute("onclick", "$.fn.qiniuUpload.delImg(this,'photo')");
    img.src = url;
    li.appendChild(em);
    li.appendChild(img);
    li.appendChild(a);
    li.style.display = "inline-block";
    photoshow.appendChild(li);
    }
    }
    $.fn.qiniuUpload.delImg=function(obj,valueId){//删除
    var photo = $("#"+valueId).val();
    if (photo.substr(0,1)==',') photo=photo.substr(1);
    var arr=new Array();
    arr=photo.split(",");
    arr.splice($(obj).parent().find("li").index(obj),1);
    arr.join(",");
    $("#"+valueId).val(arr);
    $(obj).parent().remove();
    //$(obj).siblings("img").remove();
    //$(obj).remove();
    }
    })(jQuery);

  • 相关阅读:
    第01组 Alpha冲刺(4/6)
    第01组 Alpha冲刺(3/6)
    第01组 Alpha冲刺(2/6)
    第01组 Alpha冲刺(1/6)
    第01组 团队Git现场编程实战
    第01组 团队项目-需求分析报告
    团队项目-选题报告
    团队作业-选题报告
    第二次结对编程作业
    第09组 Alpha冲刺(5/6)
  • 原文地址:https://www.cnblogs.com/hubudong/p/9555115.html
Copyright © 2020-2023  润新知