【技术】若依框架的文件上传组件(bootstrap-fileinput)

引入组件

<th:block th:include="include :: bootstrap-fileinput-css" />
<th:block th:include="include :: bootstrap-fileinput-js" />

基础用法

以下是官网给的案例,详细参数去【若依官网文档】查看

<!DOCTYPE html>
<html lang="zh">
<head>
	<th:block th:include="include :: header('文件上传')" />
	<th:block th:include="include :: bootstrap-fileinput-css" />
</head>
<body class="gray-bg">
<div class="wrapper wrapper-content animated fadeInRight">
        <div class="row">
            <div class="col-sm-12">
                <div class="ibox float-e-margins">
                    <div class="ibox-title">
                        <h5>文件上传控件 <small>https://github.com/kartik-v/bootstrap-fileinput</small></h5>
                    </div>
                    <div class="ibox-content">
                    	<div class="form-group">
                            <label class="font-noraml">单文件上传</label>
	                        <div class="file-loading">
					            <input id="singleFile" name="file" type="file">
					        </div>
                        </div>
                        
                        <div class="form-group">
                            <label class="font-noraml">多文件上传</label>
	                        <div class="file-loading">
					            <input id="multipleFile" name="files" type="file" multiple>
					        </div>
                        </div>
                        <hr>
                        <div class="form-group">
                            <label class="font-noraml">相关参数详细信息</label>
                            <div><a href="http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-fileinput" target="_blank">http://doc.ruoyi.vip/ruoyi/document/zjwd.html#bootstrap-fileinput</a></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <th:block th:include="include :: footer" />
    <th:block th:include="include :: bootstrap-fileinput-js" />
    <script th:inline="javascript">
    
    $(document).ready(function () {
    	// 单图上传
    	$("#singleFile").fileinput({
            uploadUrl: ctx + 'common/upload',
            maxFileCount: 1,
            autoReplace: true
        }).on('fileuploaded', function (event, data, previewId, index) {
        	var rsp = data.response;
            log.info("return url:" + rsp.url)
            log.info("reutrn fileName:" + rsp.fileName)
        }).on('fileremoved', function (event, id, index) {
            $("input[name='" + event.currentTarget.id + "']").val('')
        })
        
        // 多图上传
        $("#multipleFile").fileinput({
            uploadUrl: ctx + 'common/uploads',
            uploadAsync: false
        }).on('filebatchuploadsuccess', function (event, data, previewId, index) {
        	var rsp = data.response;
        	log.info("return urls:" + rsp.urls)
            log.info("reutrn fileNames:" + rsp.fileNames)
        }).on('fileremoved', function (event, id, index) {
            $("input[name='" + event.currentTarget.id + "']").val('')
        })
    });
    </script>
</body>
</html>

特殊用法

文件上传组件默认单独上传之后,在点击提交表单。但是有些情况下我们需要带着文件和表单数据。

  • 固定参数
<script th:inline="javascript">
    //点击表单的提交按钮调用该方法
    function submitHandler() {
        if ($.validate.form()) {
            $("#multipleFile").fileinput("upload");
        }
    }
	// 多文件上传
    $("#multipleFile").fileinput({
        uploadUrl: prefix + '/uploadBatch', // 这里是控制层的路径,该路径接收文件和数据
        uploadAsync: false,
        showUpload: false, // 由于是提交表单上传,这里禁用掉上传按钮
        layoutTemplates: {actionUpload: ''}, // 由于是提交表单上传,这里禁用掉每个组件的上传按钮
        uploadExtraData:{
            name: 'value' // 这里是上传文件携带的其他参数,默认情况下只支持固定参数
        }
    }).on('filebatchuploadsuccess', function (event, data, previewId, index) {
        // 控制层返回的JSON数据
        var rsp = data.response;
        // 这里可以根据返回的数据进行额外处理
    }).on('fileremoved', function (event, id, index) {
        $("input[name='" + event.currentTarget.id + "']").val('')
    })
</script>
  • 动态参数

适用于手动输入数据 + 提交文件需求

<script th:inline="javascript">
    //点击表单的提交按钮调用该方法
    function submitHandler() {
        if ($.validate.form()) {
            $("#multipleFile").fileinput("upload");
        }
    }
	// 多文件上传
    $("#multipleFile").fileinput({
        uploadUrl: prefix + '/uploadBatch', // 这里是控制层的路径,该路径接收文件和数据
        uploadAsync: false,
        showUpload: false, // 由于是提交表单上传,这里禁用掉上传按钮
        layoutTemplates: {actionUpload: ''}, // 由于是提交表单上传,这里禁用掉每个组件的上传按钮
        // 动态参数写法,缩略图预览和索引作为参数
        uploadExtraData: function(previewId, index){
        	// 参数对象
            var data = {};
			data.key = $("").val();
			return data;
        }
    }).on('filebatchuploadsuccess', function (event, data, previewId, index) {
        // 控制层返回的JSON数据
        var rsp = data.response;
        // 这里可以根据返回的数据进行额外处理
    }).on('fileremoved', function (event, id, index) {
        $("input[name='" + event.currentTarget.id + "']").val('')
    })
</script>

配置项

属性类型默认值描述
languageString‘en’多语言设置,使用时需提前引入locales文件夹下对应的语言文件,中文zh,引入语言文件必须放在fileinput.js之后
showCaptionBooleantrue是否显示被选文件的简介
showBrowseBooleantrue是否显示浏览按钮
showPreviewBooleantrue是否显示预览区域
showRemoveBooleantrue是否显示移除按钮
showUploadBooleantrue是否显示上传按钮
showCancelBooleantrue是否显示取消按钮
showCloseBooleantrue是否显示关闭按钮
showUploadedThumbsBooleantrue这个属性是基于这样一个使用方法的:选择若干个文件后点击右下角上传按钮批量上传,待全部完成后再选择一批文件,此时之前上传成功的文件是否要保存。就是这个属性控制的。注意,点击文件缩略图下面的上传按钮不会导致之前的成功上传的文件消失,即使这里设置了true
browseOnZoneClickBooleanfalse
autoReplaceBooleanfalse是否自动替换当前图片,设置为true时,再次选择文件, 会将当前的文件替换掉。
generateFileIdObjectnull
previewClassString添加预览按钮的类属性
captionClassString添加标题类属性
frameClassString‘krajee-default’针对每个缩略图的框架
mainClassString‘file-caption-main’针对元素类属性
mainTemplateObjectnull
purifyHtmlBooleantrue
fileSizeGetterObjectnull
initialCaptionString
initialPreviewArray/Object[]通过这个参数,我们可以为文件区设置一些默认的缩略图
initialPreviewDelimiterString‘$$’
initialPreviewAsDataBooleanfalse
initialPreviewFileTypeString‘image’
initialPreviewConfigArray/Object[]
initialPreviewThumbTagsArray/Object[]
previewThumbTagsObject{}
initialPreviewShowDeleteBooleantrue
removeFromPreviewOnErrorBooleanfalse
deleteUrlString删除图片时的请求路径
deleteExtraDataObject{}删除图片时额外传入的参数
overwriteInitialBooleantrue
previewZoomButtonIconsObject{prev: ‘’,next: ‘’,toggleheader: ‘’,fullscreen: ‘’,borderless: ‘’,close: ‘’},
previewZoomButtonClassesObject{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’},
preferIconicPreviewBooleanfalse
preferIconicZoomPreviewBooleanfalse
allowedPreviewTypesundefinedundefined
allowedPreviewMimeTypesObjectnull
allowedFileTypesObjectnull接收的文件后缀,如[‘jpg’, ‘gif’, ‘png’],不填将不限制上传文件后缀类型
allowedFileExtensionsObjectnull指出带有哪些后缀名的文件才是被接受上传的,设置msgInvalidFileExtension可以个性化出现此错误时的错误信息
defaultPreviewContentObjectnull
customLayoutTagsObject{}
customPreviewTagsObject{}
layoutTemplatesObject{actionUpload: ‘’,actionZoom: ‘’,actionDownload: ‘’,actionDelete: ‘’}渲染布局的每个部分的模板配置
previewFileIconString当文件无法被预览时出现在缩略图中的图标,默认是
previewFileIconClassString‘file-other-icon’
previewFileIconSettingsObject{}可以将不同的后缀的文件有不同的缩略图图标
previewFileExtSettingsObject{}
buttonLabelClassString‘hidden-xs’
browseIconString
browseClassString‘btn btn-primary’指出了右下角选择按钮的样式。一般尽量不要用btn-sm和btn-lg,会和左边的输入框不协调
removeIconString删除按钮相关的属性
removeClassString‘btn btn-default’
cancelIconString
cancelClassString‘btn btn-default’
uploadIconString上传按钮相关的属性
uploadClassString‘btn btn-default’
uploadUrlStringnull上传文件路径
uploadAsyncbooleantrue是否为异步上传
uploadExtraDataObject{}上传文件时额外传递的参数设置
zoomModalHeightnumber480
minImageWidthStringnull图片的最小宽度
minImageHeightStringnull图片的最小高度
maxImageWidthStringnull图片的最大宽度
maxImageHeightStringnull图片的最大高度
resizeImageBooleanfalse
resizePreferenceString‘width’
resizeQualitynumber0.92
resizeDefaultImageTypeString‘image/jpeg’
minFileSizenumber0单位为kb,上传文件的最小大小值
maxFileSizenumber0单位为kb,如果为0表示不限制文件大小
resizeDefaultImageTypenumber25600(25MB)
minFileCountnumber0表示同时最小上传的文件个数
maxFileCountnumber0表示允许同时上传的最大文件个数
validateInitialCountBooleanfalse
msgValidationErrorClassString‘text-danger’
msgValidationErrorIconString
msgErrorClassString‘file-error-message’
progressThumbClassString“progress-bar progress-bar-success progress-bar-striped active”
rogressClassString“progress-bar progress-bar-success progress-bar-striped active”
progressCompleteClassString“progress-bar progress-bar-success”
progressErrorClassString“progress-bar progress-bar-danger”
progressUploadThresholdnumber99
previewFileTypeString‘image’预览文件类型,内置[‘image’, ‘html’, ‘text’, ‘video’, ‘audio’, ‘flash’, ‘object’,‘other‘]等格式
elCaptionContainerStringnull
elCaptionTextStringnull设置标题栏提示信息
elPreviewContainerStringnull
elPreviewImageStringnull
elPreviewStatusStringnull
elErrorContainerStringnull
errorCloseButtonString×’
slugCallbackfunctionnull选择后未上传前 回调方法
dropZoneEnabledBooleantrue是否显示拖拽区域
dropZoneTitleClassString‘file-drop-zone-title’拖拽区域类属性设置
fileActionSettingsObject{}设置预览图片的显示样式
otherActionButtonsString编码设置
textEncodingString‘UTF-8’
ajaxSettingsObject{}
ajaxDeleteSettingsObject{}
showAjaxErrorDetailsBooleantrue

方法配置

方法名描述
fileerror异步上传错误结果处理$(‘#uploadfile’).on(‘fileerror’, function(event, data, msg) {});
fileuploaded异步上传成功结果处理$(“#uploadfile”).on(“fileuploaded”, function (event, data, previewId, index) {})
filebatchuploaderror批量上传错误结果处理$(‘#uploadfile’).on(‘filebatchuploaderror’, function(event, data, msg) {});
filebatchuploadsuccess批量上传成功结果处理$(‘#uploadfile’).on(‘filepreupload’, function(event, data, previewId, index) {});
filebatchselected选择文件后处理事件$(“#fileinput”).on(“filebatchselected”, function(event, files) {});
upload文件上传方法$(“#fileinput”).fileinput(“upload”);
fileuploaded上传成功后处理方法$(“#fileinput”).on(“fileuploaded”, function(event, data, previewId, index) {});
fileresetPossible values: http, https, ws, wss.
fileclear点击浏览框右上角X 清空文件前响应事件$(“#fileinput”).on(“fileclear”,function(event, data, msg){});
filecleared点击浏览框右上角X 清空文件后响应事件$(“#fileinput”).on(“filecleared”,function(event, data, msg){});
fileimageuploaded在预览框中图片已经完全加载完毕后回调的事件
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值