上传插件如何使用,我这里就不多说了,网上大把教程。今天我要讲的是如何限制上传一个文件,以及当文件选择错误是,再重新选择文件导致的问题。
默认给上传插件支持多文件上传,但是我们有很多需求是之上传单个文件,下面就来一起学习学习吧!
插件html
选择文件
开始上传
图片尺寸255x255,透明背景
插件初始化:
var uploader = WebUploader.create({
auto:false,
// swf文件路径
swf: "{{ asset("plugins") }}/webuploader-0.1.5/Uploader.swf) ",
// 文件接收服务端。
server: "{{url('/ad/upload/img')}}",
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: {
id:'#picker',
multiple:false //限制多文件上传
},
accept:{
title:'Images',
extentions: "png,jpeg,jpg",
mimeTypes: 'image/jpg,image/jpeg,image/png'
},
formData:{
'_token':'{{csrf_token()}}'//laravel框架必不可少的
},
fileVal:"img",
// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize: false,
fileNumLimit: 1
});
只需把multiple的值设为false,且fileNumLimit文件个数设为1,但是,这里还没完,如果运营在选择图片时选择错误,再点击选择图片时,图片不会替换掉,只能刷新再选择,显然这样体验是很不好的(会被人在心里默默骂死)。
所以还得加上下面关键一步:
// 当有文件添加进来的时候
uploader.on( 'fileQueued', function( file ) {
// 创建缩略图
// 如果为非图片文件,可以不用调用此方法。
uploader.makeThumb( file, function( error, src ) {
if ( error ) {
layer.msg('不能预览');
return;
}
$("#preview").html("");
}, 100, 100 );
//删除错误的第一个文件
$("#picker").on("click",function () {
uploader.removeFile(file);
})
});
//点击上传
$("#ctlBtn").on("click",function () {
uploader.upload();
})
// 文件上传成功,给item添加成功class, 用样式标记上传成功。
uploader.on( 'uploadSuccess', function( file , msg ) {
$( '#'+file.id ).addClass('upload-state-done');
// 把服务器返回的图片地址保存到隐藏域
if(msg.status ="SUCCESS"){
layer.msg('上传成功',{icon:1,time:2000});
$('input[name=img]').val( msg.fileUrl );
}else{
layer.msg("上传失败",{icon:2,time:3000});
}
});
// 文件上传失败,显示上传出错。
uploader.on( 'uploadError', function( file ) {
var $li = $( '#'+file.id ),
$error = $li.find('div.error');
// 避免重复创建
if ( !$error.length ) {
$error = $('').appendTo( $li );
}
$error.text('上传失败');
});
$("#picker").on("click",function () {
uploader.removeFile(file);
})
该代码的含义是:给选择按钮添加点击事件,目的是删除队列中已有的文件,这样就可以替换原来错误的文件了,亲试有效!!
新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
https://cloud.tencent.com/redirect.php?redirect=1040&cps_key=8ee0f9c89dfe0958071ea9b77e110670&from=console