<div class="content"> <input multiple class="" id="uploadFile5" type="file" value="选择图片"> </div>
注:控件生产的结构都会在content容器中这效果图css
$(".content").fileinput( language: 'en', showCaption: true, showBrowse: true, showPreview: true, showRemove: true, showUpload: true, showCancel: true, showClose: true, showUploadedThumbs: true, browseOnZoneClick: false, autoReplace: false, generateFileId: null, previewClass: '', captionClass: '', frameClass: 'krajee-default', mainClass: 'file-caption-main', mainTemplate: null, purifyHtml: true, fileSizeGetter: null, initialCaption: '', initialPreview: [], initialPreviewDelimiter: '*$$*', initialPreviewAsData: false, initialPreviewFileType: 'image', initialPreviewConfig: [], initialPreviewThumbTags: [], previewThumbTags: {}, initialPreviewShowDelete: true, removeFromPreviewOnError: false, deleteUrl: '', deleteExtraData: {}, overwriteInitial: true, previewZoomButtonIcons: { prev: '<i class="glyphicon glyphicon-triangle-left"></i>', next: '<i class="glyphicon glyphicon-triangle-right"></i>', toggleheader: '<i class="glyphicon glyphicon-resize-vertical"></i>', fullscreen: '<i class="glyphicon glyphicon-fullscreen"></i>', borderless: '<i class="glyphicon glyphicon-resize-full"></i>', close: '<i class="glyphicon glyphicon-remove"></i>' }, previewZoomButtonClasses: { prev: 'btn btn-navigate', next: 'btn btn-navigate', toggleheader: 'btn btn-default btn-header-toggle', fullscreen: 'btn btn-default', borderless: 'btn btn-default', close: 'btn btn-default' }, preferIconicPreview: false, preferIconicZoomPreview: false, allowedPreviewTypes: undefined, allowedPreviewMimeTypes: null, allowedFileTypes: null, allowedFileExtensions: null, defaultPreviewContent: null, customLayoutTags: {}, customPreviewTags: {}, previewFileIcon: '<i class="glyphicon glyphicon-file"></i>', previewFileIconClass: 'file-other-icon', previewFileIconSettings: {}, previewFileExtSettings: {}, buttonLabelClass: 'hidden-xs', browseIcon: '<i class="glyphicon glyphicon-folder-open"></i> ', browseClass: 'btn btn-primary', removeIcon: '<i class="glyphicon glyphicon-trash"></i>', removeClass: 'btn btn-default', cancelIcon: '<i class="glyphicon glyphicon-ban-circle"></i>', cancelClass: 'btn btn-default', uploadIcon: '<i class="glyphicon glyphicon-upload"></i>', uploadClass: 'btn btn-default', uploadUrl: null, uploadAsync: true, uploadExtraData: {}, zoomModalHeight: 480, minImageWidth: null, minImageHeight: null, maxImageWidth: null, maxImageHeight: null, resizeImage: false, resizePreference: 'width', resizeQuality: 0.92, resizeDefaultImageType: 'image/jpeg', resizeIfSizeMoreThan: 0, // in KB minFileSize: 0, maxFileSize: 0, maxFilePreviewSize: 25600, // 25 MB minFileCount: 0, maxFileCount: 0, validateInitialCount: false, msgValidationErrorClass: 'text-danger', msgValidationErrorIcon: '<i class="glyphicon glyphicon-exclamation-sign"></i> ', msgErrorClass: 'file-error-message', progressThumbClass: "progress-bar progress-bar-success progress-bar-striped active", progressClass: "progress-bar progress-bar-success progress-bar-striped active", progressCompleteClass: "progress-bar progress-bar-success", progressErrorClass: "progress-bar progress-bar-danger", progressUploadThreshold: 99, previewFileType: 'image', elCaptionContainer: null, elCaptionText: null, elPreviewContainer: null, elPreviewImage: null, elPreviewStatus: null, elErrorContainer: null, errorCloseButton: '<span class="close kv-error-close">×</span>', slugCallback: null, dropZoneEnabled: true, dropZoneTitleClass: 'file-drop-zone-title', fileActionSettings: {}, otherActionButtons: '', textEncoding: 'UTF-8', ajaxSettings: {}, ajaxDeleteSettings: {}, showAjaxErrorDetails: true }; //这是插件中的全部的配置选项及其默认值. //下面是经常使用的几个配置项 /*{ language: 'zh', //语言格式(默认为英文,若设置为中文或其余语言,需引入语言js) uploadUrl: 'url', allowedFileExtensions: [],//接收的文件后缀 showUpload: true, //是否显示上传按钮 showCaption: true, //是否显示标题(即文件名称) showPreview: true, //是否显示拖拽区 maxFileCount: 0, //表示容许同时上传的最大文件个数 uploadExtraData:, //向后台传递的参数 showAjaxErrorDetails: false, //上传失败后,是否显示返回的信息 ajaxSettings:{ //配置回调函数 beforeSend: fnBefore, success: fnSuccess, complete: fnComplete, error: fnError } }*/ )
此时,基本功能都已有,接下来就是根据本身的需求对其进行更进一步的配置html
提交过程当中的经常使用事件和jQuery中的很接近,有filereset, fileclear, filecleared, fileloaded, and fileerror.(能够像jquery中那样,书写注册事件,由于函数返回的仍是控件自己,因此能够链式调用)jquery
支持的各类文件类型,内置的类型有: image, text, html, video, audio, flash, object, and other.git
预览文件的默认类型有:['image', 'html', 'text', 'video', 'audio', 'flash', 'object']github
你能够自定义,如 allowedPreviewTypes: ['images','html'] 注:当将allowedPreviewTypes: 设置为 null,空,或者false时,预览图将都是相同的一个小图标.ajax
自定义 预览图的大小(宽和高,下面是插件默认的值) 如:previewSettings:{ image: {width: "auto", height: "160px"}, html: {width: "213px", height: "160px"}, text: {width: "213px", height: "160px"}, video: {width: "auto", height: "100%", 'max-width': "100%"}, audio: {width: "100%", height: "30px"}, flash: {width: "auto", height: "100%", 'max-width': "100%"}, object: {height: "100%"}, pdf: {width: "160px", height: "160px"}, other: {width: "160px", height: "160px"}}数据库
提交方式有两种 ;表单提交和基于ajax的提交 (Upload action defaults to form submit. Supports an upload route/server action parameter for custom ajax based upload.) 若想要使用ajax上传文件,必须设置uploadUrl属性,不然将默认使用form表单提交:json
uploadUrl:'个人url地址'
返回的数据应为json类型bootstrap
上传类型:上传异步仍是同步(默认是异步):缓存
uploadAsync :true 异步时每一个文件发送一次ajax;同步上传时,ajax只触发一次
传递参数的方法:传递参数,有两种方式:
a.初始化时就肯定数据:uploadExtraData:{id:1}
b.动态获取参数并传递:
第一步,方法外定义参数:
var mydata
第二步,配置中:
uploadExtraData: function () { return mydata },
第三步,
$(".fileinput").on("filepreajax", function (event, data) { uploadExtraData ={ id:$(".someInput").val() //此时能够动态获取 }; })
minImageHeight,maxImageHeight,minImageWidth,maxImageWidth:
对上传图片的宽高进行限制(px为单位); minFileSize ,maxFileSize 对上传文件的大小进行限制(kb为单位)
经常使用函数配置(推荐使用插件的回调函数): change , fileselect ,filereset, fileclear, filecleared, fileloaded, fileerror 和jquery的回调函数很像,依次是: 文件选中后的事件,文件选中事件, input框重置事件, 当input框中的remove按钮或预览窗口的关闭按钮按下时的事件, 文件在预览框被清除事件,文件上传成功的事件:(参数较多,有function(event, file, previewId, index, reader),上传时验证失败的函数
插件支持事件(亲自测试过的):
fileuploaded(event,data , previewId , index):上传并完成时触发(不管是点击的哪一个按钮) filebatchuploadsuccess(event,data,previewId,index):当点击input的上传时(多文件上传),触发此事件 因此文件上传成功时触发(只在同步上传时,且全部文件上传成功) filebatchuploadcomplete(event,files,extra):当点击input的上传时(不管是不是多文件上传),触发此事件 (亲测不对 多文件上传结束后触发,不管异步仍是同步) filesuccessremove(event,id) :点击删除预览框中的删除按钮前触发( 已上传成功的文件 ) filepreremove(event,id,index):点击删除预览框中的删除按钮前触发( initialPreview中的文件除外,只针对于还未上传的文件 ) //id=文件容器的id , index=文件容器的index fileuploaderror(event,data,msg):选中文件后未经过验证时触发及取消正在上传的文件,可用于限制文件大小类型等 注:a. filepreajax > filepreupload > fileuploaded> filebatchuploadcomplete b.(多文件) filepreajax(屡次触发) > filepreupload > fileuploaded(屡次触发) > filebatchuploadcomplete
}
插件支持的方法:
disable,将file input框置为不可用($('#input-id').fileinput('disable').fileinput('enable'))
,enable ,可用
reset , 重置
destroy, 取消对此input 的初始化(将其变为一个普通的input框)
refresh, 刷新input
clear :清除提交的记录
,upload :触发input的上传
,cancel ,:取消正在上传的ajax
lock:锁定按钮,取消按钮除外
unlock,
addToStack :将一个文件加进缓存文件栈(必须传递一个文件对象)
,updateStack :用一个文件替换掉缓存文件栈中的一个文件$
clearStack:清空文件栈
getFileStack :返回一个已选中文件列表
getFilesCount ,
zoom,
getPreview
展现页面加载时,数据库已存在的图片(及删除的接口和传递的参数)
{ initialPreview: [ "http://lorempixel.com/1920/1080/nature/1", "http://lorempixel.com/1920/1080/nature/2", "http://lorempixel.com/1920/1080/nature/3", ], initialPreviewConfig: [{ caption: "nature-1.jpg", size: 329892, width: "120px", url: "", //删除接口 或者deleteUrl, key: 1, extra: {id: 100}, }, { caption: "nature-1.jpg", size: 329892, width: "120px", url: "", //删除接口 或者deleteUrl key: 1, extra: {id: 100}, }, { caption: "nature-1.jpg", size: 329892, width: "120px", url: "", //删除接口 或者deleteUrl key: 1, extra: {id: 100}, }, ], }
本身在使用的时候遇到的问题????:
问题: 可是,预览框中的包裹图片的元素对象的id名居然有些是同样的(大概是这样:id = 'upload-1244565476567'),(很诡异),因此根据id名我仍没法肯定到当前要删除文件,望哪位大神指点迷津,将十分感谢 . . .
2017-05-13:补充:针对第一个问题,搜过做者的论坛后,初步得出答案,每当有文件上传成功后,都将上传控件destroy,而后立刻再次的初始化,并将服务器中的因此图片的信息经过 initailPreview配置,默认的显示在页面中,这样因此的图片的删除动做使用的都是initailPreviewConfig中的url进行删除. 如有哪一个地方理解的有误,或者对此插件有熟练的使用,还请大神指点迷津,将十分感谢 . . .