欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

免费的HTML5版uploadify送上

程序员文章站 2022-03-30 16:10:43
 相信有不少同学用过uploadify这一款文件上传插件,它支持多文件选择、能显示进度条、可配置性高,总体来说是比较好用的。官网有两个版本供下载,分别是flash版和HTML5版。...
 相信有不少同学用过uploadify这一款文件上传插件,它支持多文件选择、能显示进度条、可配置性高,总体来说是比较好用的。官网有两个版本供下载,分别是flash版和HTML5版。不过令人惋惜的是,HTML5版是收费的。活了这么多年,啥时候用软件掏过钱啊!秉着发扬我们的优良传统,我决定照着它的API自己实现一个HTML5版的。

 

  经过一番折腾,终于覆盖了大部分API,已经能够实现基本的文件上传需求。如下,是插件中的default配置:

 

复制代码

var defaults = {

        fileTypeExts:'',//允许上传的文件类型,格式'*.jpg;*.doc'

        uploader:'',//文件提交的地址

        auto:false,//是否开启自动上传

        method:'post',//发送请求的方式,get或post

        multi:true,//是否允许选择多个文件

        formData:null,//发送给服务端的参数,格式:{key1:value1,key2:value2}

        fileObjName:'file',//在后端接受文件的参数名称,如PHP中的$_FILES['file']

        fileSizeLimit:2048,//允许上传的文件大小,单位KB

        showUploadedPercent:true,//是否实时显示上传的百分比,如20%

        showUploadedSize:false,//是否实时显示已上传的文件大小,如1M/2M

        buttonText:'选择文件',//上传按钮上的文字

        removeTimeout: 1000,//上传完成后进度条的消失时间,单位毫秒

        itemTemplate:itemTemp,//上传队列显示的模板

        onUploadStart:null,//上传开始时的动作

        onUploadSuccess:null,//上传成功的动作

        onUploadComplete:null,//上传完成的动作

        onUploadError:null, //上传失败的动作

        onInit:null,//初始化时的动作

        onCancel:null//删除掉某个文件后的回调函数,可传入参数file

    }

复制代码

  已实现的特性有:

 

多文件上传

显示进度条

显示已上传文件大小和百分比

文件后缀名和文件大小检测

向服务端提交额外数据

自定义文件队列中的html模板

css样式分离出单独文件,可自己定制样式

添加文件上传各阶段的回调函数

使用方式

  首先页面上需要一个容器,通常是一个p,如:

 

<p id="upload"></p>

  然后直接调用即可:

 

复制代码

$('#upload').Huploadify({

        auto:true,

        fileTypeExts:'*.jpg;*.png;*.exe',

        multi:true,

        formData:{key:123456,key2:'vvvv'},

        fileSizeLimit:1024,

        showUploadedPercent:true,

        showUploadedSize:true,

        removeTimeout:9999999,

        uploader:'upload.php',

        onUploadStart:function(){

            console.log('开始上传');

            },

        onInit:function(){

            console.log('初始化');

            },

        onUploadComplete:function(){

            console.log('上传完成');

            },

        onCancel:function(file){

            console.log(file);

        }

    });