个人小结---LayUI上传单文件

    按钮所在的层不应是form,按钮不能多次实例化,以下每次都会打开一个新窗口,此处加上限制,render只实例化一次(如果多次示例,会出现文件上传没反应,无法触发layui响应,无法上传到后台)。

以下是Html(在本人的项目中,以下的最外层div要多次弹框使用。layui.open打开该div,使用的layui的版本是2.0.2):

<div id="form" class="layui-upload" hidden="hidden">
    文件名: <input type="text"
               
style="width: 450px;height: 25px"/>
    <div class="layui-btn-group">
        <button style="margin-bottom:10px" class="layui-btn layui-btn-small"
               
title="新建" >新建</button>
        <button style="float:right;margin-bottom:10px" class="layui-btn layui-btn-small"
               
id="file-upload-btn" title="从文件导入">导入</button>
    </div>
    <div class="lineDiv">
        <table class="layui-table" lay-filter=L-table">
            <thead>
            <tr>
                <th field="name" width="40%"></th>
                <th field="name" width="40%"></th>
                <th field="name" width="20%">操作</th>
            </tr>
            </thead>
            <tbody id="paramFile-table">
            </tbody>
        </table>
    </div>
</div>

以下是JS:

var uploadFileBtnInstEdit;//上传文件按钮(编辑)
var uploadFileBtnInst;//上传文件按钮(新建)

layui.use('upload', function(){
   
if (formType == '-edit' && typeof (uploadFileBtnInstEdit) == 'undefined'){
        uploadFileBtnInstEdit
= initUploadFileBtnInst(formType);
   
}else if(formType == '' && typeof (uploadFileBtnInst) == 'undefined' ) {
        uploadFileBtnInst
= initUploadFileBtnInst(formType);
   
}
})
;

/**
 *
初始化上传按钮(只初始化一次)
 * @param formType
 */

function initUploadFileBtnInst(formType){
   
var upload = layui.upload;
   
var tempUploadFileBtnInst = upload.render({
       
elem: '#file-upload-btn'+formType //绑定按钮元素
       
,url: '/uploadParamFile' //上传接口
       
,auto:true
       
,accept: 'file'
       
,multiple: false
       
,method:'post'
       
,size:5000 //此处设为最大50M
        
,field: 'file'//对应后台的@RequestParam("file"),可修改
        ,drag :false
       
,before: function(obj){
           
layer.load(); //上传loading
       
}
       
,done: function(res){
           
//上传完毕回调
            layer.closeAll('loading'); //关闭loading
       
}
       
,error: function(){
           
//请求异常回调
           
layer.msg('未知错误', {
               
time: 5000, //5s后自动关闭
               
btn: ['确定']
            })
;
            layer.
closeAll('loading'); //关闭loading
       
}
    })
;
   
return tempUploadFileBtnInst;
}

以下是后台代码

@PostMapping("/uploadParamFile")
@ResponseBody
public Map<String, Object> uploadParamFile(@RequestParam("file") MultipartFile file) {
   
//log.info("开始解析");
   
Map<String, Object> result = new HashMap<String, Object>();

return result;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
form表元素包括:text 文本输入框,password密码输入框,checkbox复选框,radio选框,file 文件域,submit表提交action指向的文件,reset表清空,image图片提交按钮,button按钮,hidden隐藏域。 select option select 实现下拉选 callback 是回调函数 layui.模块   模块可以是layui已经存在的模块,也可以通过layui.define([mods], callback) 来自己自定义模块。 如果想要使用模块首先要做的必然是加载模块,layui.use(['laypage', 'layedit'], function(){}); 接下来使用layui风格控件  其实感觉layui帮我们定义好了CSS和许多JS文本,我们需要做的只是按照layui的命名规范选好样式进而使用就可以了。  layu官方文档的命名规范为: CSS命名规范 class命名前缀:layui,连接符:-,如:class="layui-form" 命名格式一般分为两种: 一:layui-模块名-状态或类型 二:layui-状态或类型 因为有些类并非是某个模块所特有,他们通常会是一些公共类。如: 一(定义按钮的原始风格):class="layui-btnlayui-btn-primary" 二(定义内联块状元素):class="layui-inline" 1 2 3 4 5 6 7 8 9 当然还有前面提到的使用模块的js代码: layui.use(['form', 'layedit', 'laydate'], function(){   var form = layui.form   ,layer = layui.layer   ,layedit = layui.layedit   ,laydate = layui.laydate;   //日期   laydate.render({     elem: '#date'   });   laydate.render({     elem: '#date1'   });   //创建一个编辑器   var editIndex = layedit.build('LAY_demo_editor');   //自定义验证规则   form.verify({     title: function(value){       if(value.length < 5){         return '标题至少得5个字符啊';       }     }     ,pass: [/(.+){6,12}$/, '密码必须6到12位']     ,content: function(value){       layedit.sync(editIndex);     }   });   //监听指定开关   form.on('switch(switchTest)', function(data){     layer.msg('开关checked:'+ (this.checked ? 'true' : 'false'), {       offset: '6px'     });     layer.tips('温馨提示:请注意开关状态的文字可以随意定义,而不仅仅是ON|OFF', data.othis)   });   //监听提交   form.on('submit(demo1)', function(data){     layer.alert(JSON.stringify(data.field), {       title: '最终的提交信息'     })     return false;   }); }); 下面我们按照官方文档的开发规范使用一下form表的例子       表集合演示           行输入框                       验证必填项                             验证手机                                   验证邮箱                                       多规则验证                                   验证日期                                   验证链接                                 验证身份证                       自定义验证                   请填写6到12位密码               范围                           -                                 行选择框                   </opt

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值