layui 上传图片校验

    layui地址[添加链接描述](https://www.layui.com/doc/modules/upload.html)![在这里插入图片描述](https://img-blog.csdnimg.cn/2020101911421089.png#pic_center)

在这里插入图片描述

    var uploadInst = upload.render({
        elem: '#test2'
        ,accept: 'images'
        ,multiple:false
        ,auto: false
        , url: '{:url("upload/uploadImg")}' //改成您自己的上传接口
        ,auto: false //
        ,choose: function(obj){  //上传前选择回调方法
            var flag = true;
            // https://www.layui.com/doc/modules/upload.html
            obj.preview(function(index, file, result){
                // console.log(file);            //file表示文件信息,result表示文件src地址
                var img = new Image();
                img.src = result;
                img.onload = function () { //初始化夹在完成后获取上传图片宽高,判断限制上传图片的大小。
                    console.log(img.width+'宽度');
                    console.log(img.height+'高度');
                    if(img.width <= 1000){
                        $('#demo2').attr('src', result);
                        obj.upload(index, file); //满足条件调用上传方法
                    }else{
                        flag = false;
                        // layer.msg("您上传的图片最短边至少50px,最长边最大4096px!");
                        layer.alert("上传海报图片宽度不可大于1000px", { icon: 5, title: "提示", offset: "auto", skin: 'layui-layer-molv' });
                        return false;
                    }
                }
                return flag;
            });
        }
        , done: function (res) {
            //如果上传失败
            if (res.code > 0) {
                return layer.msg('上传失败');
            }
            //上传成功
            $('input[name="thumb"]').val(res.data)
        }
        , error: function () {
            //演示失败状态,并实现重传
            var demoText = $('#demoText2');
            demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
            demoText.find('.demo-reload1').on('click', function () {
                uploadInst.upload();
            });
        }
    });
### Layui图片上传中的图片格式验证 在Layui框架中实现图片上传功能时,可以通过自定义JavaScript逻辑来完成图片格式的验证。以下是具体的实现方式: #### 验证流程说明 当用户选择文件后,在触发`choose`事件时可以获取到所选文件列表,并通过遍历这些文件逐一校验其扩展名是否符合预期。如果发现不符合规定的文件,则提示错误信息并阻止后续操作。 #### 代码示例 下面是一个完整的例子展示如何利用Layui插件执行上述过程: ```javascript layui.use(['upload'], function(){ var upload = layui.upload; // 执行实例 var uploadInst = upload.render({ elem: '#test-upload' // 绑定元素 ,url: '/upload/' // 接收数据的服务端地址 ,accept: 'images' // 只允许上传图片类型 ,multiple: true // 开启多图模式 ,before: function(obj){ obj.preview(function(index, file, result){ let fileName = file.name; let fileType = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase(); if (!['jpg', 'jpeg', 'png', 'gif'].includes(fileType)) { layer.msg('仅支持 jpg/jpeg/png/gif 格式的图片!', {icon: 2}); this.error(); // 主动终止当前文件上传 } }); }, done: function(res){ console.log(res); }, error: function(){ // 请求异常回调 } }); }); ``` 此段脚本实现了如下几个要点: - 使用 `obj.preview()` 方法预览每一个待上传的文件。 - 提取文件名称并通过字符串处理得到其扩展部分。 - 判断该扩展名是否属于许可集合内[^1]。 - 如果检测失败则调用 `this.error()` 来中断此次上传尝试,并给出相应的警告消息给前端使用者。 #### 注意事项 需要注意的是,虽然客户端进行了初步筛选,但在实际项目开发过程中仍需服务端再次确认接收到的数据合法性以防恶意攻击者绕过浏览器限制提交非法内容。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值