webUploader常用功能
发布于 2019-05-06 修改于 2019-09-26 笔记 前端 WebUploader
此前工作时,前端的图片上传样式一直有问题,加上前端人员无暇顾及,便在网上寻找一个合适的图片上传插件,最终发现了这款插件WebUploader,并且发现好几个游戏交易网站的图片上传插件也是这个,于是抽空学习记录了下。
建一个图片上传
var uploader=WebUploader.create({
auto:false, //是否开启选择图片后自动上传,true:开启,false:关闭
server:'upload.do', //上传接口
dnd:'#fileList', //指定区域可以将图片拖拽进去,多区域用,隔开
paste:document.body, //指定区域通过粘贴添加截屏的图片,建议设置为document.body
pick:{
id:'#filePicker', //选取按钮变为选择图片按钮
label:'点击选择图片', //按钮文字
multiple:true //是否开启多图选择
},
accept:{ //指定接收哪些类型文件
title:'Images', //文字描述
extensions:'gif,jpg,jpeg,bmp,png', //允许的文件后缀,不带点,用逗号分开
mimeTypes:'image/*' //???
},
thumb:{ //配置生成缩略图的选项
width:100,
height:100,
qualiity:70, //图片质量,只有type为image/jpeg的时候才有效
allowMagnify:false, //是否允许放大,生成小图不失真请选择false
crop:false, //是否允许裁剪
type:'image/jpeg' //为空的话保留原有图片格式,否则强制转成指定格式
},
compress:{ //配置压缩图片的选项,如果为false,则上传前不进行压缩
width:1600,
height:1600,
quality:50, //图片压缩质量,只有type为image/jpeg的时候才有效
allowMagnify:false, //是否允许放大,生成小图不失真请选择false
crop:false, //是否允许裁剪
preserveHeaders:true, //是否保留头部meta信息
noCompressIfLarger:false, //如果压缩后文件比原文件大则使用原图,可能影响图片自动纠正
compressSize:0 //单位字节,如果图片大小小于此值,不会采取压缩
},
prepareNextFile:true, //允许文件上传提前把下一个文件准备好,比如需要图片压缩,md5序列化
fileVal:file , //设置文件上传域的name,MultipartFile类型去接收
method:'POST', //文件上传方式:POST或者GET
fileNumLimit:2, //限定上传数量
fileSizeLimit:1024*1024, //限制总大小 1024*1024=1MB,但是这里设定不准确
fileSingleSizeLimit:1024, //限制单个文件大小 1024=1KB
})
WebUpLoader事件
事件详情访问WebUpLoader API。下面举一个例子
uploadStart 在某个文件开始上传前触发,一个文件只触发一次。
如何调用
uploader.onUploadStart=function(file){
alert("开始上传");
}
或者
uploader.on('uploadStart',function(file){
alert("开始上传啦");
});
获取或者设置配置项(option)
uploader.option('thumb',{ //获取缩略图thumb配置
crop:true //此时缩略图被裁剪 长宽设置貌似有优先级
});
getStats
获取文件统计信息。返回信息如下:
- successNum 上传成功的文件数
- progressNum 上传中的文件数
- cancelNum 被删除的文件数
- invalidNum 无效的文件数
- uploadFailNum 上传失败的文件数
- queueNum 还在队列中的文件数
- interruptNum 被暂停的文件数
例子
uploader.on('uploadComplete',function(file){
alert(uploader.getStats().successNum); //上传完成时弹出上传成功的文件数
});
addButton
添加文件选择按钮,如果一个按钮不够,需要调用此方法来添加。参数跟 pick一致
uploader.addButton({
id:"#btn",
innerHtml:'选择文件'
});
makeThumb
生成缩略图,此过程为异步,所以需要传入callback。通常情况在图片加入队里后调用此方法来生成预览图。
makeThumb(file,callback)
makeThumb(file,callback,width,height)
callback中可以接收两个参数
- error,如果生成缩略图有错误,此error将为真
- ret,缩略图的Data URL值 在IE6/7中不支持
例子
uploader.on('fileQueued', function(file) { //文件添加后触发
var $li = $('<div id="'+file.id+'"class="file-item thumbnail">'
+ '<img>' + '<div class="info">' + file.name + '</div>'
+ '</div>'), $img = $li.find('img');
$("#fileList").append($li);
uploader.makeThumb(file, function(error, src) { //生成缩略图
if (error) {
$("#fileList").replaceWith('<span>不能预览</span>');
return;
}
$img.attr('src', src);
}, 100, 100);
});
addFiles
添加文件到队列
addFiles(file)
addFiles([file1,file2…])
removeFile
移除某一文件,默认只会标记文件状态已取消,如果第二个参数为true则会从queue(队列)中移除
retry
重试上传,重试指定文件,或者出错的文件重新上传
retry()
retry(file)
upload
开始上传,可以在暂停后调用继续上传
upload()
upload(file|fileId)
stop
暂停上传
stop()
stop(true)
stop(file)