关于Bootstrap File input插件

关于Bootstrap File input插件

最近因项目需求用到这个插件,开发过程中查资料花费了大量时间,因此总结使用方法下来防止再次使用时遗忘。
相关文档:Github地址插件文档DEMO

  • 插件引入说明
<script type="text/javascript" src="/bootstrap-fileinput/js/fileinput.min.js"></script>
<script type="text/javascript" src="/bootstrap-fileinput/js/locales/zh.js"></script>
<script type="text/javascript" src="/bootstrap-fileinput/js/plugins/sortable.min.js" ></script> <!-- 排序时使用到,如不需要对图片进行排序,可以不加 -->
<script type="text/javascript"><{include file="../statics/js/others/fileinput_userinfo.js"}></script>
  • 开发DEMO

1.HTML

<!-- HTML -->
<div class="form-group">
    <label for="awards" class="col-sm-2 control-label">获奖情况</label>
    <div class="col-sm-9">
        <input type="file" id="awards" name="awards" multiple>
        <div id="divawards" class="piclist" style=" margin:10px 0px;">
            <{if $awards}>
                <{foreach from=$awards item=list name=album}>
                    <input type="hidden" name="info[awards][{$list.id}][award_img]" value="{$list.award_img}" id="awards_{$list.id}">
                <{/foreach}>
            <{/if}>
        </div>
        <!-- JS函数引用 -->
        <script type="text/javascript" charset="utf-8" async defer>
            initFileInput("awards", "public_ajax_upload?id=awards", "public_del_awards?");
            initPortrait("awards");
        </script>
    </div>
</div>

2.JavaScript

//初始化fileinput控件(第一次初始化)
function initFileInput(ctrlName,uploadUrl,deleteUrl){
    var control = $('#' + ctrlName);  
    control.fileinput({
        language: 'zh',
        uploadUrl: "/usercenter/userinfo/" + uploadUrl,   //上传路径
        deleteUrl: "/usercenter/userinfo/" + deleteUrl,   //删除路径

        enctype: 'multipart/form-data',
        // maxFileCount: 1,                               //最大允许上传数量
        dropZoneEnabled: false,                           //是否显示拖拽区域
        showCaption: false,                               //是否显示标题
        showUpload: true,                                 //是否显示上传按钮
        showRemove:false,
        resizeImage: true,

    }).on('fileuploaded',function(event,data,key){
        if (data.response.is_success == true) {
            //上传成功操作事件(删除旧的服务器图片,修改数据库)
        } else {
            alert("上传出错!");
        }

    }).on('filepredelete', function(event, key) {           //删除前事件
        if (!confirm('确定删除该文件?')) {
            ctrlName.fileinput('cancel');   //终止操作
        }

    }).on('filedeleted', function(event, key, data) {       //删除后事件
        //删除操作事件(删除服务器图片,修改数据库)

    }).on('filesuccessremove', function(event, id, key) {   //移除上传事件
        //先上传图片后直接删除图片,未进行提交操作

    })
}

//初始化图像信息,可针对不同控件进行设置
function initPortrait(ctrlName) {
    var control = $('#' + ctrlName);
    switch(ctrlName){
        case "awards":
            var footerTemplate = '<div class="file-thumbnail-footer">\n' +
                '   <div style="margin:5px 0">\n' +
                '       <input class="kv-input kv-new form-control input-sm text-center {TAG_CSS_NEW}" name="info[insert_awards_des][][award_describe]" value="{caption}" placeholder="输入获奖详情" {NEW_SHOW}>\n' +
                '       <input class="kv-input kv-init form-control input-sm text-center {TAG_CSS_INIT}" name="info[awards][{width}][award_describe]" value="{TAG_VALUE}" key="{width}" placeholder="Enter caption..." {INIT_SHOW}>\n' +
                '   </div>\n' +
                '   {size}\n' +
                '   {actions}\n' +
                '</div>';
            //重要,需要更新控件的附加参数内容,以及图片初始化显示
            control.fileinput('refresh', {
                maxFileSize: 10485760,
                maxImageWidth: 260,
                maxImageHeight: 180,
                allowedFileExtensions : ['jpg', 'jpeg', 'png', 'gif', 'ico'],//接收的文件后缀
                overwriteInitial: false,

                layoutTemplates: {footer: footerTemplate, size: '<samp><small>({sizeText})</small></samp>'},  //设置填写的图片备注

                //初始化图片
                initialPreview: [
                    {if $awards}
                        {foreach from=$awards item=list name=album}
                            '{$list.award_img}',
                        {/foreach}
                    {/if}
                ],
                initialPreviewAsData: true,
                initialPreviewConfig: [
                    {if $awards}
                        {foreach from=$awards item=list name=album}
                            {caption: "<{$list.award_describe}>", width: "{$list.id}", key: {$list.id}},
                        {/foreach}
                    {/if}

                ],

                //新增图片的input控件配置
                previewThumbTags: {
                    '{TAG_VALUE}': '',        // no value
                    '{TAG_CSS_NEW}': '',      // new thumbnail input
                    '{TAG_CSS_INIT}': 'hide',  // hide the initial input
                    '{INIT_SHOW}': 'disabled'
                },
                //初始化图片的input控件配置
                initialPreviewThumbTags: [
                    {if $awards}
                        {foreach from=$awards item=list name=album}
                            {'{TAG_VALUE}': '{$list.award_describe}', '{TAG_CSS_NEW}': 'hide', '{TAG_CSS_INIT}': '', '{NEW_SHOW}': 'disabled'},
                        {/foreach}
                    {/if}
                ],

            });
        break;
    }
}
  • 预览
    这里写图片描述

  • 注意

    1. input 按钮必须要有 multiple,否则无法多图上传,而且上传第二张图片时,第一张图片会被覆盖;
<input type="file" id="awards" name="awards" multiple>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 和大小、格式等功能,你会怎么实现呢? 对于Bootstrap上传文件插件fileinput,我们可以使用前端框架来实现多文件上传、预览、删除以及限制最大上传数量和大小、格式等功能。具体实现如下: 1. 在HTML页面中引入fileinput插件的CSS和JS文件。 2. 创建一个input标签,并给它添加class为"file",然后给这个标签添加data属性,用来设置fileinput的一些参数。 3. 在JS文件中,初始化fileinput插件,设置参数,例如设置最大上传数量、大小、格式等,以及预览和删除功能的相关操作。 4. 最后,将fileinput插件渲染到HTML页面中即可。 这样,我们就可以很方便地实现Bootstrap上传文件插件fileinput的多文件上传、预览、删除以及限制最大上传数量和大小、格式等功能。 ### 回答2: Bootstrap上传文件插件fileinput可以通过设置参数实现多文件上传、预览、删除以及限制最大上传数量。 首先,在使用fileinput插件时,需要设置`showUpload`参数为`true`,以显示上传按钮。 其次,设置`uploadUrl`参数为服务器上的上传文件处理程序的URL,用于实际处理上传文件的操作。 然后,设置`maxFileCount`参数来限制最大上传数量。例如,若需要限制最大上传数量为3,可以设置`maxFileCount`为3。 在HTML代码中,需要添加一个`<input>`标签,设置其`id`属性,并与插件进行绑定。例如,`<input id="myFileinput" type="file" name="file" multiple>`。 接下来,在JavaScript代码中,可以使用`$('#myFileinput').fileinput()`来初始化fileinput插件。 为了实现文件上传预览的功能,可以设置`showPreview`参数为`true`。这将在选择文件时显示文件的缩略图预览。 针对删除文件的功能,可以设置`showRemove`参数为`true`。这将在文件缩略图上显示一个删除按钮,点击该按钮即可删除对应的文件。 通过以上设置和参数,Bootstrap上传文件插件fileinput可以实现多文件上传、预览、删除以及限制最大上传数量的功能。 ### 回答3: Bootstrap是一个流行的前端开发框架,其提供了丰富的插件供开发人员使用。其中一个常用的插件fileinput,它可以方便地实现多文件上传、预览、删除以及限制最大上传数量的功能。 fileinput插件基于HTML5的File API,可以通过一个简单的配置实现多文件上传。首先,我们需要在HTML文件中引入必要的JS和CSS文件,然后使用Bootstrap的表单组件来创建一个用于上传文件的表单项。 在JS文件中,我们可以使用fileinput的初始化函数来配置插件的参数。通过设置maxFileCount参数,我们可以限制用户一次上传的最大文件数量。另外,通过设置showPreview参数为true,可以让插件在上传过程中实时显示文件的预览图像。 为了实现文件的删除功能,我们可以使用fileinput提供的deleteUrl参数,将上传成功的文件的唯一标识(比如文件名或ID)传递给服务器端进行删除操作。如果不需要预览图像,我们可以将showPreview参数设为false,这样插件将不会显示上传的文件预览图像。 总之,通过使用Bootstrap上传文件插件fileinput,我们可以方便地实现多文件上传、预览、删除以及限制最大上传数量的功能。只需简单的配置,就可以满足用户的需求。同时,插件提供了良好的交互和视觉效果,使文件上传操作更加友好和便捷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值