fileinput异步多文件上传删除
最近使用了bootstrap-fileinput插件,插件本身写的还不错,就是文档有点看不懂,语言逻辑毕竟不是中国人写的,自己用了一段时间,整理一下
附官网文档地址:http://www.bootstrap-fileinput.com/options.html
需要引入的bootstrap样式以及js请自行查找,本处不在复述。
<div class="form-group"> <label class="col-sm-2 control-label">图片:</label> <div class="col-sm-4"> <input type="file" id="imageFiles" name="imageFiles" accept="image/*" multiple> </div>
</div>
multiple 这是属性代表的是多文件上传,如果去掉,那么只能上传一个文件
/*js代码初始化*/
$("#imageFiles").fileinput({ /*以下三个属性是设置初始化动态加载,*/ initialPreviewAsData: true,//允许动态获取数据预览 initialPreview:[
'localhost/image1',
'localhost/image2',
],//动态加载图片地址url,可以填写多个使用','隔开,我是通过c标签forEach循环的地址 initialPreviewConfig: [ {
type:'audio',//这个设置的是预加载的类型 可以是audio video text其他的类型,我没找到
filetype:'audio/mp3',//设置更加具体的预览类型
caption:'123',个初始化预览文件的标题或者文件名 url: '/musicTheory/ajaxDeleteImage',//ajax删除这个文件第url extra: {id: '8456456'}//给url传入的参数以及名称 },//对应'localhost/image1'
{
url: '/musicTheory/ajaxDeleteImage',
extra: {id: '${musicTheoryImage.id}'}
},//对应'localhost/image2'
],//该标签是动态加载的配置项,是以数组的形式,每个数组分别对应initialPreview中的图片(按照顺序) uploadUrl:"/upload/musicTheoryUploadImage", //异步上传接受请求地址 uploadAsync : true, //默认异步上传 showCancel:false,//是否显示文件名 initialPreviewShowDelete:true,//显示图片上面的删除按钮 overwriteInitial:false,//动态加载图片之后,在重新上传新的图片的时候是否清除动态加载的图片默认是true 清除,false不清除 showUpload : false, //是否显示上传按钮,跟随文本框的那个 showRemove : false, //显示移除按钮,跟随文本框的那个 showCaption : true,//是否显示标题,就是那个文本框 showPreview : true, //是否显示预览,不写默认为true dropZoneEnabled : true,//是否显示拖拽区域,默认不写为true,但是会占用很大区域 showUploadedThumbs:false,//上传完毕之后,清理预览框中的图片,默认false清理*/ maxFileSize: 0,//单位为kb,如果为0表示不限制文件大小 minFilesNum:1,//最小上传图片个数 maxFilesNum:10,//最大上传图片个数 //minFileCount: 0, maxFileCount : 10, //表示允许同时上传的最大文件个数 //autoReplace : false,//是否自动替换当前图片,设置为true时,再次选择文件,会将当前的文件替换掉。 enctype : 'multipart/form-data', validateInitialCount : true,//验证minFileCount和maxFileCount时是否包含初始预览文件计数(服务器上载的文件)。默认为false browseOnZoneClick:true, previewFileIconSettings: { 'docx': '<i class="fa fa-file-word-o text-primary" ></i>', 'xlsx': '<i class="fa fa-file-excel-o text-success"></i>', 'pptx': '<i class="fa fa-file-powerpoint-o text-danger"></i>', 'jpg': '<i class="fa fa-file-photo-o text-warning"></i>', 'pdf': '<i class="fa fa-file-pdf-o text-danger"></i>', 'zip': '<i class="fa fa-file-archive-o text-muted"></i>', 'doc': '<i class="fa fa-file-word-o text-primary"></i>', 'xls': '<i class="fa fa-file-excel-o text-success"></i>', 'ppt': '<i class="fa fa-file-powerpoint-o text-danger"></i>', 'pdf': '<i class="fa fa-file-pdf-o text-danger"></i>', 'zip': '<i class="fa fa-file-archive-o text-muted"></i>', 'htm': '<i class="fa fa-file-code-o text-info"></i>', 'txt': '<i class="fa fa-file-text-o text-info"></i>', 'mov': '<i class="fa fa-file-movie-o text-warning"></i>', 'mp3': '<i class="fa fa-file-audio-o text-warning"></i>', 'jpg': '<i class="fa fa-file-photo-o text-danger"></i>', 'gif': '<i class="fa fa-file-photo-o text-muted"></i>', 'png': '<i class="fa fa-file-photo-o text-primary"></i>' }, previewFileIcon : "<i class='glyphicon glyphicon-king'></i>", /* layoutTemplates:{ actionUpload:'',//去除缩略图中的上传图片 actionZoom:'', //去除缩略图中的查看详情预览的缩略图标 actionDownload:'', //去览缩略图中的下载图标 actionDelete:'', //去除缩略图中的删除图标 },*/ msgFilesTooMany : "选择上传的文件数量({n}) 超过允许的最大数值{m}!", allowedFileTypes : [ 'image' ],//配置允许文件上传的类型 audio video text object allowedPreviewTypes : [ 'image' ],//配置所有的被预览文件类型 allowedPreviewMimeTypes : ["jpg", "jpeg", "gif", "png"],//控制被预览的所有mime类型 language : 'zh' }); $("#imageFiles").on('fileuploaded', function(event, data, previewId, index) {//异步上传成功结果处理 var img= data;//接收后台传过来的json数据 var data=img.response; if(data.code=="0000"){ $("#hiddenImageFiles").append("<input type='hidden' name='musicTheoryImageList["+i+"].url' value='"+data.data+"'>"); i++; } }); $('#imageFiles').on('filesuccessremove', function(event, id) {//这个是ajax上传成功之后,点击缩略图中的删除按钮触发的事件 console.log('Uploaded thumbnail successfully removed'); console.log('Event'+event); console.log('Id'+id); }); $('#imageFiles').on('filepreremove', function(event,id,index) { console.log("id:"+id+"index:"+index+"event:"+event); });//ajax异步上传成功之前删除可以触发的事件,上传成功之后再按删除按钮,不管用的啊 $('#imageFiles').on('fileclear', function(event) {//input框中清除按钮触发的事件 $("[name='musicTheoryImageList"]).remove(); }); $("#imageFiles").on('fileerror', function(event, data, msg) {//异步上传失败结果处理 alert("上传失败"); });