layui劝退

之前没有接触过layui, 这次项目中尝试了一下,巨坑。而且 现在 react、vue大行其道,心得:作为程序员应该尝试流行的技术

需求:上传图片的时候需要检查图片的宽高比,使用layui的upload模块,即使拦截了,也会上传,而且无需请求后端。我怀着急躁的心情只好在后端检测了

layui:

upload.render({
            elem: '#layuiadmin-upload-list'
            , url: '/books/uploadImg'
            , accept: 'images'
            , field: 'file'//后台接收参数名
            ,data: {
            //原路径 带参过去删除
                cover_img_big_old: $("#cover_img_big").val(),
                cover_img_old:$("#avatar").val()
            }
            , acceptMime: 'image/*'
            , auto: false
            , before: function(obj) {
                layer.load();
            }
            ,choose: function(obj){  //上传前选择回调方法
                var flag = true;
                obj.preview(function(index, file, result){
                    console.log(file);            //file表示文件信息,result表示文件src地址
                    var img = new Image();
                    img.src = result;
                    img.onload = function () { //初始化夹在完成后获取上传图片宽高,判断限制上传图片的大小。
                        if(img.width ==600 && img.height ==800){
                            obj.upload(index, file); //满足条件调用上传方法
                        }else{
                            flag = false;
                            layer.msg("您上传的小图大小必须是600*800尺寸!");
                            return false;
                        }
                    }
                    return flag;
                });
            }
            , done: function (res) {
                layer.closeAll('loading');
                $("#cover_img_big").val(res.data.cover_img)
                $("#avatar").val(res.data.cover_img)
                $("#showImg").show()
            }
        });

没办法,只好放弃了,就在后端判断

	img = request.files['file']
    if img and allowed_file(img.filename):
        imgfs = gridfs.GridFS(mydb)
        fname = secure_filename(img.filename)
        f = cv2.imdecode(np.fromstring(img.read(),"uint8"), 1)
        w, h, c = f.shape
        if w/h > 2 or w/h < 1/2:
        	# 做拦截

你可能感兴趣的:(python)