bootstrap-fileinput是一款基于Bootstrap 3.x的HTML5文件上传插件。该文件上传插件带有预览图效果,可同时选择多个文件。该插件使用bootstrap CSS3样式来制作文件上传界面,美观大方。并且它提供了多国语言,你可以选择使用中文。
该文件上传插件比普通的文件上传插件功能更强大,它可以对图片、文本文件、HTML文件、视频文件、音频文件、flash文件生成预览图。另外,它还可以基于AJAX上传文件,拖拽上传文件,查看上传进度,可以选择性的预览,添加或删除文件。
该文件上传插件的特点有:
uploadUrl
属性。showPreview
属性设置为false
,或者浏览器不支持uploadUrl
属性,将会回退为普通的文件上传组件。可以使用bower来安装该文件上传插件。
bower install bootstrap-fileinput
使用该文件上传插件首先要引入需要的外部依赖文件和fileinput.min.js及fileinput.min.css文件。
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css" rel="stylesheet"> <link href="path/to/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css" /> <script src="jquery/2.1.1/jquery.min.js"></script> <script src="path/to/js/fileinput.min.js"></script> <!-- bootstrap.js below is only needed if you wish to the feature of viewing details of text file preview via modal dialog --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js" type="text/javascript"></script> <!-- optionally if you need translation for your language then include locale file as mentioned below --> <script src="path/to/js/fileinput_locale_<lang>.js"></script>
如果你需要使用语言国际化功能,可以添加上fileinput_locale_lang.js
文件,中文对应的是fileinput_locale_zh.js
文件。
// initialize with defaults $("#input-id").fileinput(); // with plugin options $("#input-id").fileinput({'showUpload':false, 'previewFileType':'any'});
#input-id
是文件上传input元素的ID标识符(例如:type = file
)。
你也可以直接通过HTML5 data属性来初始化插件。
<input id="input-id" type="file" class="file" data-preview-file-type="text" >
true
。true
。true
。uploadUrl
属性。默认值true
。true
。string
。string
。string
。initialPreview
属性中用于上传多个文件时的分隔符。默认值:'*$$*'
。string
或array
。显示的初始化预览内容。你可以传入一个简单的HTML标签用于显示图片、文本或文件。如果设置一个字符串,会在初始化预览图中显示一个文件。你可以在initialDelimiter
属性中设置分隔符用于显示多个预览图。如果设置为数组,初始化预览图中会显示数组中所有的文件。
下面的CSS样式用于显示各种不同类型的文件预览图:
file-preview-image
file-preview-text
file-preview-other
下面的例子是如何设置不同类型文件的初始化预览图:
// for image files initialPreview: [ "<img src='/images/desert.jpg' class='file-preview-image' alt='Desert' title='Desert'>", "<img src='/images/jellyfish.jpg' class='file-preview-image' alt='Jelly Fish' title='Jelly Fish'>", ], // for text files initialPreview: "<div class='file-preview-text' title='NOTES.txt'>" + "This is the sample text file content upto wrapTextLength of 250 characters" + "<span class='wrap-indicator' onclick='$(\"#show-detailed-text\").modal(\"show\")' title='NOTES.txt'>[…]</span>" + "</div>" // for other files initialPreview: "<div class='file-preview-text'>" + "<h2><i class='glyphicon glyphicon-file'></i></h2>" + "Filename.xlsx" + "</div>"
int
。被添加到选择的文件的初始化预览图的数量。当overwriteInitial
属性设置为false
时,该参数可以显示正确的文件标题。string
。用于分割初始化预览图内容的分割符。只有在initialPreview
属性传入的参数是字符串而不是数组时可用。默认值是:*$$*
。array
。每一个initialPreview
项的配置属性。数组中的每一个元素都应该是下面关键字组成的对象或关联数组:
- `caption`: _string_, the caption or filename to display for each initial preview item content. - `width`: _string_, the CSS width of the image/content displayed. - `url`: _string_, the URL for deleting the image/content in the initial preview via AJAX post response. This will default to `deleteUrl` if not set. - `key`: _string|object_, the key that will be passed as data to the `url` via AJAX POST. - `extra`: _object|function_, the extra data that will be passed as data to the initial preview delete url/AJAX server call via POST. This will default to `deleteExtraData` if not set.
下面是配置initialPreviewConfig
属性的一个例子。
// setup initial preview with data keys initialPreview: [ "<img src='/images/desert.jpg' class='file-preview-image' alt='Desert' title='Desert'>", "<img src='/images/jellyfish.jpg' class='file-preview-image' alt='Jelly Fish' title='Jelly Fish'>", ], // initial preview configuration initialPreviewConfig: [ { caption: 'desert.jpg', width: '120px', url: '/localhost/avatar/delete', key: 100, extra: {id: 100} }, { caption: 'jellyfish.jpg', width: '120px', url: '/localhost/avatar/delete', key: 101, extra: function() { return {id: $("#id").val()}; }, } ]
注意:ajax delete操作会通过POST向服务器发送下面的数据:
initialPreviewConfig['extra']
或deleteExtraData
格式传入的其它作为key: value
键值对数据。initialPreview
插件的预览图创建一个删除按钮。array
。预览图的一组标签。它会在预览图生成之后动态的替换掉缩略图标签。例如:
// change thumbnail footer template layoutTemplates.footer = 'CUSTOM MARKUP', '{CUSTOM_TAG_INIT}': ' ' };'; // set preview template tags previewThumbTags = { '{CUSTOM_TAG_NEW}': '
上面只是该文件上传插件一部分的属性,要查看完整的属性和可用方法,可以查看:https://github.com/kartik-v/bootstrap-fileinput/。