WebUploader文件上传插件

WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+。两套运行时,同样的调用方式,可供用户任意选用。

官方文档:http://fex.baidu.com/webuploader/doc/?qq-pf-to=pcqq.group

各个参数的说明文档中都有,可以详细参考一下文档,再这里给大家列出一个上传文件的实现,如有不足的地方希望大家指出,谢谢。

首先引如外部资源 css,js文件:

这里$不要管,这个只是spring项目中使用el表达式来写静态文件前缀了。使用的话,测试的话直接写死绝对路即可。

linkhref="${ctx}/css/plugins/webuploader/webuploader.css"rel="stylesheet">

scriptsrc="${ctx}/js/plugins/webuploader/webuploader.min.js">>

引入bootstrap的js

scriptsrc="${ctx}/js/plugins/bootstrap-table/bootstrap-table.js">>

接着写容器的DOM

divclass="form-horizontal">

divclass="form-group">

labelclass="col-sm-3control-label">选择文件>

divclass="col-sm-3">

labelid="picker">选择文件>

div>

divclass="col-sm-6">

inputid="uploadBtn"type="button"value="上传文件"

class="btnbtn-success"/>

inputid="fileName"type="hidden"name="fileName">

inputid="configPreName"type="hidden"name="configPreName"

value="tracingUpload">

buttonid="clearBtn"class="btnbtn-warning"type="button">清空上传文件

button>

div>

div>

div>

divclass="form-horizontal">

divclass="form-group">

divclass="col-sm-3">>

divclass="col-sm-6">

divid="thelist"class="uploader-list">>

div>

div>

最后初始化webuploader组件,设置上传等事件监听。

/**

*上传文件方法

*/

functionuploadFiles() {

var$list=$('#thelist'),

$btn=$('#uploadBtn'),

$clearBtn=$('#clearBtn'),

state='pending';

varconfigPreName=$('#configPreName').val();

varuploader=WebUploader.create({

// swf文件路径

swf:'/js/plugins/webuploader/Uploader.swf',

//文件接收服务端。

server:'/documents/file/upload',

//选择文件的按钮。可选。

// 内部根据当前运行是创建,可能是input元素,也可能是flash.

pick:'#picker',

//不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!

resize:false,

//上传文件格式,可支持多种格式

accept: {

title:'Files',

extensions:'gif,jpg,jpeg,bmp,png,pdf,doc,docx,txt,xls,xlsx,ppt,pptx,zip,mp3,mp4,text,csv',

mimeTypes:'image/*,text/*'

//word

+',application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document'

//excel

+',application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

//ppt

+',application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation'

+',application/pdf'

+',application/zip'

+',application/csv'

}

});

//当有文件被添加进队列的时候

uploader.on('fileQueued',function(file) {

varfiles=uploader.getFiles();

for(vari=;ilength-1;i++) {

uploader.removeFile(files[i],true);

}

$list.html('');

$list.append('

+ file.id+'">'+

''+ file.name+''+

'

单击上传按钮开始上传...

'+

'

');

});

//文件上传过程中创建进度条实时显示。

uploader.on('uploadProgress',function(file, percentage) {

var$li=$('#'+ file.id),

$percent=$li.find('.progress .progress-bar');

//避免重复创建

if(!$percent.length) {

$percent=$('

'+

'

'+

'

'+

'

').appendTo($li).find('.progress-bar');

}

$li.find('p.state').text('上传中');

$percent.css('width', percentage *100+'%');

});

uploader.on('uploadSuccess',function(file, response) {

if(response.msgCode =='success') {

toastr.success("", response.message);

//后续显示处理,另行增加}

if(response.msgCode =='fail') {

toastr.warning("", response.message);

}

varfiles=uploader.getFiles();

for(vari=;ilength;i++) {

uploader.removeFile(files[i],true);

}

$list.html('');

});

uploader.on('uploadError',function(file) {

$('#'+ file.id).find('p.state').text('上传出错');

});

uploader.on('uploadComplete',function(file) {

$('#'+ file.id).find('.progress').fadeOut();

});

uploader.on('all',function(type) {

if(type ==='startUpload') {

state='uploading';

}else if(type ==='stopUpload') {

state='paused';

}else if(type ==='uploadFinished') {

state='done';

}

if(state==='uploading') {

$btn.text('暂停上传');

}else{

$btn.text('导入');

}

});

//上传

$btn.on('click',function() {

if(state==='uploading') {

uploader.stop();

}else{

uploader.upload();

}

});

//清空

$clearBtn.on('click',function() {

//alert(state);

varfiles=uploader.getFiles();

for(vari=;ilength;i++) {

uploader.removeFile(files[i],true);

}

$list.html('');

});

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180521G0954L00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券