首页 web前端 Layui教程 layui文件上传、预览及修改方法

layui文件上传、预览及修改方法

Dec 28, 2019 pm 05:13 PM
layui

layui文件上传、预览及修改方法

单文件上传

1、HTML

<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                        <div id="uploadQRcode" class="layui-upload">
                        <button type="button" class="layui-btn" id="uploadQR">
                            <i class="layui-icon">&#xe67c;</i>上传客服二维码<span style="color: red;font-size: 20px;">*</span>
                        </button>
                        <div class="layui-upload-list">
                            <img id="qrshow" src="" alt="" class="layui-upload-img"
                                 style="height: 100px;width:100px;border:1px solid black;">
                        </div>
                        <div id="startDiv">
                            <button type="button" class="layui-btn" id="startUploadQR">开始上传</button>
                        </div>
                            <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传一张图片, 单张图片的大小不超过2MB</div>
                    </div>
                    <input type="text" name="cli_qrcode" id="qrInput" style="display: none;" lay-verify="required">
</blockquote>
登录后复制

2、js部分

layui.use(['form', 'element', 'upload'], function () {
        var form = layui.form;
        var element = layui.element;
        var $ = layui.jquery;
        var upload = layui.upload;

        //单文件示例  选完文件后不自动上传
        var uploadSingle = upload.render({
            elem: '#uploadQR'
            , url: '/web/api/upload/upload?option=4'
            , accept: 'images'  // 允许上传的文件类型
            , size: 2048        // 最大允许上传的文件大小  单位 KB
            , auto: false
            , bindAction: '#startUploadQR'
            , choose: function (obj) {
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#qrshow').attr('src', result); //图片链接(base64)
                });
            }
            , done: function (res, index, upload) {
                if (res.code == 0) {
                    //上传成功
                    $("#qrInput").val(res.data[0].fp_relative);
                    var startDiv = $('#startDiv');
                    startDiv.html('<span style="color: #5FB878;">上传成功</span>');
                } else {
                    this.error(index, upload);
                }
            }
            , error: function (index, upload) {
                //演示失败状态,并实现重传
                var startDiv = $('#startDiv');
                startDiv.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload" style="width:50px;height:30px;text-align:center;line-height:30px;">重试</a>');
                startDiv.find('.demo-reload').on('click', function () {
                    uploadSingle.upload();
                });
            }
        });
    });
登录后复制

多图片的上传

1、HTML

<blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                        <div id="uploadImg" class="layui-upload">
                        <button type="button" class="layui-btn" id="upload">
                            <i class="layui-icon">&#xe67c;</i>上传商铺图片<span style="color: red;font-size: 20px;">*</span>
                        </button>
                        <div class="layui-upload-list">
                            <table class="layui-table" style="text-align: center;">
                                <thead>
                                <tr>
                                    <th style="text-align: center;">图片预览</th>
                                    <th style="text-align: center;">大小</th>
                                    <th style="text-align: center;">状态</th>
                                    <th style="text-align: center;">操作</th>
                                </tr>
                                </thead>
                                <tbody id="imgList"></tbody>
                            </table>
                        </div>
                        <button type="button" class="layui-btn" id="startUpload">开始上传</button>
                            <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传六张图片, 单张图片的大小不超过5MB, 长宽比例推荐1.5:1,
                                推荐上传图片长675px,宽450px
                            </div>
                    </div>
                    <input type="text" name="face_img" id="imgInput" style="display: none;" lay-verify="required">
</blockquote>
登录后复制

2、js部分

layui.use(['table', 'form', 'element', 'upload'], function () {
        var table = layui.table;
        var form = layui.form;
        var element = layui.element;
        var $ = layui.jquery;
        var upload = layui.upload;
        
        //多文件列表示例
        var demoListView = $('#imgList');
        var totalArray = new Array();
        var uploadInst = upload.render({
            elem: '#upload' //绑定元素
            , url: '/web/api/upload/upload?option=3' //上传接口
            , accept: 'images'  // 允许上传的文件类型
            // , acceptMime: 'image/jpg,image/png'   // (只支持jpg和png格式,多个用逗号隔开),
            , size: 5120        // 最大允许上传的文件大小  单位 KB
            , auto: false //选择文件后不自动上传
            , bindAction: '#startUpload' //指向一个按钮触发上传
            , multiple: true   // 开启多文件上传
            , number: 6    //  同时上传文件的最大个数
            , choose: function (obj) {
                var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
                var arr = Object.keys(files);
                totalArray = totalArray.concat(arr);
                // 检查上传文件的个数
                if (totalArray.length <= 6) {
                    //读取本地文件
                    obj.preview(function (index, file, result) {
                        var tr = $([&#39;<tr id="upload-&#39; + index + &#39;">'
                            , '<td><img src="&#39; + result + &#39;" alt="&#39; + file.name + &#39;" class="layui-upload-img" style="height: 66px;width:100px;"></td>'
                            , '<td>' + (file.size / 1014).toFixed(1) + 'kb</td>'
                            , '<td>等待上传</td>'
                            , '<td>'
                            , '<button class="layui-btn demo-reload layui-hide">重传</button>'
                            , '<button class="layui-btn layui-btn-danger demo-delete">删除</button>'
                            , '</td>'
                            , '</tr>'].join(''));

                        //单个重传
                        tr.find('.demo-reload').on('click', function () {
                            obj.upload(index, file);
                        });

                        //删除
                        tr.find('.demo-delete').on('click', function () {
                            delete files[index]; //删除对应的文件
                            tr.remove();
                            uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
                        });

                        demoListView.append(tr);
                    });
                } else {
                    // 超出上传最大文件
                    layer.msg("上传文件最大不超过6个")
                }

            }
            , done: function (res, index, upload) {
                console.log("res", res);
                if (res.code == 0) { //上传成功
                    // 上传成功后将图片路径拼接到input中,多个路径用","分割
                    var inputVal = document.getElementById("imgInput").value;
                    var valData = "";
                    if (inputVal) {
                        valData = inputVal + "," + res.data[0].fp_relative;
                    } else {
                        valData = res.data[0].fp_relative;
                    }
                    document.getElementById("imgInput").value = valData;
                    var tr = demoListView.find('tr#upload-' + index)
                        , tds = tr.children();
                    tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
                    tds.eq(3).html(''); //清空操作
                    return delete this.files[index]; //删除文件队列已经上传成功的文件

                }
                this.error(index, upload);
            }
            , error: function (index, upload) {
                var tr = demoListView.find('tr#upload-' + index)
                    , tds = tr.children();
                tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
                tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
            }
        });
    });
登录后复制

添加页面

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>添加商铺</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="{{static_url(&#39;layui/css/layui.css&#39;)}}" media="all">
</head>
<body>
<div style="margin-top: 30px;">

    <form class="layui-form layui-form-pane">
        <div>
            <div class="layui-col-xs8 layui-col-xs-offset2">
                <div>
                    <label>商铺名称<span style="color: red;font-size: 20px;">*</span></label>
                    <div>
                        <input type="text" lay-verify="required" name="name" autocomplete="off">
                    </div>
                </div>
            </div>
        </div>

        <div>
            <div class="layui-col-xs8 layui-col-xs-offset2">
                <div>
                    <label>商铺编号</label>
                    <div>
                        <input type="text" name="code" autocomplete="off">
                    </div>
                </div>
            </div>
        </div>

        <div>
            <div class="layui-col-xs8 layui-col-xs-offset2">
                <div>
                    <label>详细地址<span style="color: red;font-size: 20px;">*</span></label>
                    <div>
                        <input type="text" name="address" required lay-verify="required" autocomplete="off"
                               class="layui-input">
                    </div>
                </div>
            </div>
        </div>
        <div>
            <div class="layui-col-xs8 layui-col-xs-offset2">
                <div>
                    <label>联系方式<span style="color: red;font-size: 20px;">*</span></label>
                    <div>
                        <input type="text" name="contact" required lay-verify="required|phone" autocomplete="off"
                               class="layui-input">
                    </div>
                </div>
            </div>
        </div>

        <div>
            <div class="layui-col-xs8 layui-col-xs-offset2">
                <div>
                    <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                        <div id="uploadQRcode">
                        <button type="button" id="uploadQR">
                            <i>&#xe67c;</i>上传客服二维码<span style="color: red;font-size: 20px;">*</span>
                        </button>
                        <div>
                            <img id="qrshow" src="" alt=""
                                 style="height: 100px;width:100px;border:1px solid black;">
                        </div>
                        <div id="startDiv">
                            <button type="button" id="startUploadQR">开始上传</button>
                        </div>
                            <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传一张图片, 单张图片的大小不超过2MB</div>
                    </div>
                    <input type="text" name="cli_qrcode" id="qrInput" style="display: none;" lay-verify="required">
                    </blockquote>

                </div>
            </div>
        </div>
        <div>
            <div class="layui-col-xs8 layui-col-xs-offset2">
                <div>
                    <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                        <div id="uploadImg">
                        <button type="button" id="upload">
                            <i>&#xe67c;</i>上传商铺图片<span style="color: red;font-size: 20px;">*</span>
                        </button>
                        <div>
                            <table style="text-align: center;">
                                <thead>
                                <tr>
                                    <th style="text-align: center;">图片预览</th>
                                    <th style="text-align: center;">大小</th>
                                    <th style="text-align: center;">状态</th>
                                    <th style="text-align: center;">操作</th>
                                </tr>
                                </thead>
                                <tbody id="imgList"></tbody>
                            </table>
                        </div>
                        <button type="button" id="startUpload">开始上传</button>
                            <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传六张图片, 单张图片的大小不超过5MB, 长宽比例推荐1.5:1,
                                推荐上传图片长675px,宽450px
                            </div>
                    </div>
                    <input type="text" name="face_img" id="imgInput" style="display: none;" lay-verify="required">
                    </blockquote>

                </div>
            </div>
        </div>
        <div>
            <div class="layui-col-xs8 layui-col-xs-offset2" style="margin-top: 30px;">

                <div>
                    <button class="layui-btn layui-btn-fluid" lay-submit="" lay-filter="addObject">确认保存</button>
                </div>
            </div>
        </div>
    </form>


</div>

<script src="{{static_url(&#39;layui/layui.js&#39;)}}" charset="utf-8"></script>
<script>
    layui.use(['table', 'form', 'element', 'upload'], function () {
        var table = layui.table;
        var form = layui.form;
        var element = layui.element;
        var $ = layui.jquery;
        var upload = layui.upload;

        //单文件示例  选完文件后不自动上传
        var uploadSingle = upload.render({
            elem: '#uploadQR'
            , url: '/web/api/upload/upload?option=4'
            , accept: 'images'  // 允许上传的文件类型
            , size: 2048        // 最大允许上传的文件大小  单位 KB
            , auto: false
            , bindAction: '#startUploadQR'
            , choose: function (obj) {
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#qrshow').attr('src', result); //图片链接(base64)
                });
            }
            , done: function (res, index, upload) {
                if (res.code == 0) {
                    //上传成功
                    $("#qrInput").val(res.data[0].fp_relative);
                    var startDiv = $('#startDiv');
                    startDiv.html('<span style="color: #5FB878;">上传成功</span>');
                } else {
                    this.error(index, upload);
                }
            }
            , error: function (index, upload) {
                //演示失败状态,并实现重传
                var startDiv = $('#startDiv');
                startDiv.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload" style="width:50px;height:30px;text-align:center;line-height:30px;">重试</a>');
                startDiv.find('.demo-reload').on('click', function () {
                    uploadSingle.upload();
                });
            }
        });

        //多文件列表示例
        var demoListView = $('#imgList');
        var totalArray = new Array();
        var uploadInst = upload.render({
            elem: '#upload' //绑定元素
            , url: '/web/api/upload/upload?option=3' //上传接口
            , accept: 'images'  // 允许上传的文件类型
            // , acceptMime: 'image/jpg,image/png'   // (只支持jpg和png格式,多个用逗号隔开),
            , size: 5120        // 最大允许上传的文件大小  单位 KB
            , auto: false //选择文件后不自动上传
            , bindAction: '#startUpload' //指向一个按钮触发上传
            , multiple: true   // 开启多文件上传
            , number: 6    //  同时上传文件的最大个数
            , choose: function (obj) {
                var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
                var arr = Object.keys(files);
                totalArray = totalArray.concat(arr);
                // 检查上传文件的个数
                if (totalArray.length <= 6) {
                    //读取本地文件
                    obj.preview(function (index, file, result) {
                        var tr = $([&#39;<tr id="upload-&#39; + index + &#39;">'
                            , '<td><img src="&#39; + result + &#39;" alt="&#39; + file.name + &#39;" style="height: 66px;width:100px;"></td>'
                            , '<td>' + (file.size / 1014).toFixed(1) + 'kb</td>'
                            , '<td>等待上传</td>'
                            , '<td>'
                            , '<button class="layui-btn demo-reload layui-hide">重传</button>'
                            , '<button class="layui-btn layui-btn-danger demo-delete">删除</button>'
                            , '</td>'
                            , '</tr>'].join(''));

                        //单个重传
                        tr.find('.demo-reload').on('click', function () {
                            obj.upload(index, file);
                        });

                        //删除
                        tr.find('.demo-delete').on('click', function () {
                            delete files[index]; //删除对应的文件
                            tr.remove();
                            uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
                        });

                        demoListView.append(tr);
                    });
                } else {
                    // 超出上传最大文件
                    layer.msg("上传文件最大不超过6个")
                }

            }
            , done: function (res, index, upload) {
                console.log("res", res);
                if (res.code == 0) { //上传成功
                    // 上传成功后将图片路径拼接到input中,多个路径用","分割
                    var inputVal = document.getElementById("imgInput").value;
                    var valData = "";
                    if (inputVal) {
                        valData = inputVal + "," + res.data[0].fp_relative;
                    } else {
                        valData = res.data[0].fp_relative;
                    }
                    document.getElementById("imgInput").value = valData;
                    var tr = demoListView.find('tr#upload-' + index)
                        , tds = tr.children();
                    tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
                    tds.eq(3).html(''); //清空操作
                    return delete this.files[index]; //删除文件队列已经上传成功的文件

                }
                this.error(index, upload);
            }
            , error: function (index, upload) {
                var tr = demoListView.find('tr#upload-' + index)
                    , tds = tr.children();
                tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
                tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
            }
        });
        form.on("submit(addObject)", function (data) {
            $.ajax({
                url: "/web/api/seller/add",
                type: "post",
                data: data.field,
                dataType: "json",
                success: function (response) {
                    if (response["code"] == 0) {
                        layer.msg("添加成功", {
                            icon: 1,
                            time: 2500 // 默认三秒
                        }, function () { // 关闭回调,关闭层刷新页面
                            var index = parent.layer.getFrameIndex(window.name);  // 先得到当前iframe层的索引
                            parent.layer.close(index);
                        });
                    } else {
                        layer.msg(response["msg"], {
                            icon: 1,
                            time: 1500 // 1.5秒,默认三秒
                        });
                    }
                    return false;
                },
                error: function (response) {
                    layer.msg(response["msg"], {
                        icon: 1,
                        time: 1500 // 1.5秒,默认三秒
                    });
                }
            });

            return false; // 关闭表单提交
        });
    });
</script>
</body>
</html>
登录后复制

编辑页面

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>编辑商铺</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="{{static_url(&#39;layui/css/layui.css&#39;)}}" media="all">
</head>
<body>
<div style="margin-top: 30px;">
    <form class="layui-form layui-form-pane" lay-filter="updateForm">
        <input type="text" name="seller_id" lay-verify="required" style="display: none;">
        <div>
            <div class="layui-col-xs10 layui-col-xs-offset1">
                <div>
                    <label>商铺名称</label>
                    <div>
                        <input type="text" lay-verify="required" name="name" autocomplete="off">
                    </div>
                </div>
            </div>
        </div>
        <div>
            <div class="layui-col-xs10 layui-col-xs-offset1">
                <div>
                    <label>商铺编号</label>
                    <div>
                        <input type="text" name="code" autocomplete="off">
                    </div>
                </div>
            </div>
        </div>
        <div>
            <div class="layui-col-xs10 layui-col-xs-offset1">
                <div>
                    <label>详细地址</label>
                    <div>
                        <input type="text" name="address" required lay-verify="required" autocomplete="off"
                               class="layui-input">
                    </div>
                </div>
            </div>
        </div>
        <div>
            <div class="layui-col-xs10 layui-col-xs-offset1">
                <div>
                    <label>联系方式</label>
                    <div>
                        <input type="text" name="contact" required lay-verify="required|phone" autocomplete="off"
                               class="layui-input">
                    </div>
                </div>
            </div>
        </div>

        <div>
            <div class="layui-col-xs10 layui-col-xs-offset1">
                <div>
                    <blockquote class="layui-elem-quote layui-quote-nm" style="margin-top: 10px;">
                        <div id="uploadQRcode">
                            <div>
                                <img id="qrshow" src="" alt=""
                                     style="height: 100px;width:100px;border:1px solid black;">
                            </div>
                            <div>
                                <div>
                                    <button type="button" class="layui-btn layui-btn-sm" id="uploadQR">
                                        <i>&#xe67c;</i>修改客服二维码
                                    </button>
                                </div>
                                <div id="startDiv">
                                    <button type="button" class="layui-btn layui-hide layui-btn-sm" id="startUploadQR"
                                            style="margin-left: 30px;">开始上传
                                    </button>
                                </div>
                            </div>
                            <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传一张图片, 单张图片的大小不超过2MB</div>
                        </div>
                        <input type="text" name="old_cli_qrcode" style="display: none;">
                        <input type="text" name="cli_qrcode" id="qrInput" lay-verify="required" style="display: none;">
                    </blockquote>
                </div>
            </div>
        </div>
        <div>
            <div class="layui-col-xs10 layui-col-xs-offset1">
                <div>
                    <div id="uploadImg">
                        <div>
                            <table style="text-align: center;">
                                <thead>
                                <tr>
                                    <th style="text-align: center;">图片预览</th>
                                    <th style="text-align: center;">状态</th>
                                    <th style="text-align: center;">操作</th>
                                </tr>
                                </thead>
                                <tbody id="imgList"></tbody>
                            </table>
                        </div>
                        <div>
                            <div>
                                <button type="button" class="layui-btn layui-btn-sm" id="upload">
                                    <i>&#xe67c;</i>添加商铺图片
                                </button>
                            </div>
                            <div class="layui-col-xs3 layui-col-xs-offset5">
                                <button type="button" class="layui-btn layui-btn-fluid layui-btn-sm" id="startUpload">
                                    开始上传
                                </button>
                            </div>
                        </div>
                        <div style="color: #c2c2c2;margin:10px 0;">温馨提示: 每次最多上传六张图片, 单张图片的大小不超过5MB, 长宽比例推荐1.5:1,
                            推荐上传图片长675px,宽450px
                        </div>
                    </div>
                    <input type="text" name="old_face_img" style="display: none;">
                    <input type="text" name="face_img" id="imgInput" lay-verify="required" style="display: none;">
                </div>
            </div>
        </div>
        <div>
            <div class="layui-col-xs10 layui-col-xs-offset1" style="margin-top: 30px;">
                <div>
                    <button class="layui-btn layui-btn-fluid" lay-submit="" lay-filter="addObject">确认保存</button>
                </div>
            </div>
        </div>
    </form>
</div>

<script src="{{static_url(&#39;layui/layui.js&#39;)}}" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->

<script>
    layui.use(['form', 'element', 'jquery', 'upload'], function () {
        var form = layui.form;
        var element = layui.element;
        var $ = layui.jquery;
        var upload = layui.upload;

        //单文件示例  选完文件后不自动上传
        var uploadSingle = upload.render({
            elem: '#uploadQR'
            , url: '/web/api/upload/upload?option=4'
            , accept: 'images'  // 允许上传的文件类型
            , size: 2048        // 最大允许上传的文件大小  单位 KB
            , auto: false
            , bindAction: '#startUploadQR'
            , choose: function (obj) {
                //预读本地文件示例,不支持ie8
                obj.preview(function (index, file, result) {
                    $('#qrshow').attr('src', result); //图片链接(base64)
                });
            }
            , done: function (res, index, upload) {
                if (res.code == 0) {
                    //上传成功
                    $("#qrInput").val(res.data[0].fp_relative);
                    $("#uploadQR").addClass("layui-hide");
                    var startDiv = $('#startDiv');
                    startDiv.html('<span style="color: #5FB878;font-size: 17px;">修改成功</span>');
                } else {
                    this.error(index, upload);
                }
            }
            , error: function (index, upload) {
                //演示失败状态,并实现重传
                var startDiv = $('#startDiv');
                startDiv.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload" style="width:50px;height:30px;text-align:center;line-height:30px;">重试</a>');
                startDiv.find('.demo-reload').on('click', function () {
                    uploadSingle.upload();
                });
            }
        });

        //多文件列表示例
        var demoListView = $('#imgList');
        var totalArray = new Array();
        var uploadInst = upload.render({
            elem: '#upload' //绑定元素
            , url: '/web/api/upload/upload?option=3' //上传接口
            , accept: 'images'  // 允许上传的文件类型
            // , acceptMime: 'image/jpg,image/png'   // (只支持jpg和png格式,多个用逗号隔开),
            , size: 5120        // 最大允许上传的文件大小  单位 KB
            , auto: false //选择文件后不自动上传
            , bindAction: '#startUpload' //指向一个按钮触发上传
            , multiple: true   // 开启多文件上传
            , number: 6    //  同时上传文件的最大个数
            , choose: function (obj) {
                var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
                var totalArray = Object.keys(files);
                // 检查上传文件的个数
                if (totalArray.length < (7 - demoListView.data("choiceTotal"))) {
                    //读取本地文件
                    obj.preview(function (index, file, result) {
                        var tr = $([&#39;<tr id="upload-&#39; + index + &#39;">'
                            , '<td><img src="&#39; + result + &#39;" alt="&#39; + file.name + &#39;" style="height: 66px;width:100px;"></td>'
                            , '<td>等待上传</td>'
                            , '<td>'
                            , '<button class="layui-btn layui-btn-sm demo-reload layui-hide">重传</button>'
                            , '<button class="layui-btn layui-btn-sm layui-btn-danger demo-delete">删除</button>'
                            , '</td>'
                            , '</tr>'].join(''));

                        //单个重传
                        tr.find('.demo-reload').on('click', function () {
                            obj.upload(index, file);
                        });

                        //删除
                        tr.find('.demo-delete').on('click', function () {
                            delete files[index]; //删除对应的文件
                            tr.remove();
                            uploadInst.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
                            totalArray.splice(totalArray.indexOf(index), 1);
                        });
                        demoListView.append(tr);
                    });
                } else {
                    // 超出上传最大文件
                    layer.msg("上传文件最大不超过6个");
                    totalArray.pop();
                }
            }
            , done: function (res, index, upload) {
                if (res.code == 0) { //上传成功
                    // 上传成功后将图片路径拼接到input中,多个路径用","分割
                    var inputVal = document.getElementById("imgInput").value;
                    var valData = "";
                    if (inputVal) {
                        valData = inputVal + "," + res.data[0].fp_relative;
                    } else {
                        valData = res.data[0].fp_relative;
                    }
                    document.getElementById("imgInput").value = valData;
                    var tr = demoListView.find('tr#upload-' + index)
                        , tds = tr.children();
                    tds.eq(1).html('<span style="color: #5FB878;">上传成功</span>');
                    tds.eq(2).html(''); //清空操作
                    return delete this.files[index]; //删除文件队列已经上传成功的文件
                }
                this.error(index, upload);
            }
            , error: function (index, upload) {
                var tr = demoListView.find('tr#upload-' + index)
                    , tds = tr.children();
                tds.eq(1).html('<span style="color: #FF5722;">上传失败</span>');
                tds.eq(2).find('.demo-reload').removeClass('layui-hide'); //显示重传
            }
        });

        // 监听修改客服二维码事件
        $("#uploadQR").on("click", function () {
            $("#startUploadQR").removeClass('layui-hide');
        });

        // 处理图片的修改
        demoListView.on('click', '.edit-btn', function () {
            var csid = $(this).attr("csid");
            var startid = $(this).attr("startid");
            var currentIndex = parseInt(csid.split("_")[1]);
            var $currentTr = $(this).parent().parent();
            $(this).addClass("layui-hide");
            $("#" + csid).removeClass("layui-hide");
            $("#" + startid).removeClass("layui-hide");
            var uploadEdit = upload.render({
                elem: '#' + csid
                , url: '/web/api/upload/upload?option=3'
                , accept: 'images'  // 允许上传的文件类型
                , size: 2048        // 最大允许上传的文件大小  单位 KB
                , auto: false
                , bindAction: '#' + startid
                , choose: function (obj) {
                    //预读本地文件示例,不支持ie8
                    obj.preview(function (index, file, result) {
                        $currentTr.children().eq(0).html('<img src="&#39; + result + &#39;" alt="" style="height: 66px;width:100px;">') //图片链接(base64)
                    });
                }
                , done: function (res, index, upload) {
                    if (res.code == 0) {
                        //上传成功
                        var InputTag = $("#imgInput");
                        var oldInputStrList = InputTag.val().split(",");
                        oldInputStrList[currentIndex] = res.data[0].fp_relative;
                        var newInputStr = oldInputStrList.join(",");
                        InputTag.val(newInputStr);
                        $currentTr.children().eq(1).text("修改成功");
                        $currentTr.children().eq(2).html("");
                    } else {
                        this.error(index, upload);
                    }
                }
                , error: function (index, upload) {
                    //演示失败状态,并实现重传
                    var fileHtml = '<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload" style="width:50px;height:30px;text-align:center;line-height:30px;">重试</a>';
                    $currentTr.children().eq(2).html(fileHtml);
                    $currentTr.find('.demo-reload').on('click', function () {
                        uploadEdit.upload();
                    });
                }
            });
        });

        // 处理图片的删除
        demoListView.on("click", '.delete-btn', function () {
            var delid = this.id;
            var currentDelIndex = parseInt(delid.split("_")[1]);
            var theCurrentTr = $(this).parent().parent();
            // 更新表格中当前行后面每一行的序号
            // 找到当前行后面的每一行
            theCurrentTr.nextAll().each(function () {
                // each中的this和外面的this不一样了!
                var oldCsid = $(this).children().eq(2).find(".edit-btn").attr("csid");
                var oldStarid = $(this).children().eq(2).find(".edit-btn").attr("startid");
                var oldChoiceid = $(this).children().eq(2).find(".choice-btn").attr("id");
                var oldUploadid = $(this).children().eq(2).find(".upload-btn").attr("id");
                var oldDelid = $(this).children().eq(2).find(".delete-btn").attr("id");
                if (oldDelid && oldCsid) {
                    $(this).children().eq(2).find(".edit-btn").attr("csid", oldCsid.split("_")[0] + "_" + (oldCsid.split("_")[1] - 1));
                    $(this).children().eq(2).find(".edit-btn").attr("startid", oldStarid.split("_")[0] + "_" + (oldStarid.split("_")[1] - 1));
                    $(this).children().eq(2).find(".choice-btn").attr("id", oldChoiceid.split("_")[0] + "_" + (oldChoiceid.split("_")[1] - 1));
                    $(this).children().eq(2).find(".upload-btn").attr("id", oldUploadid.split("_")[0] + "_" + (oldUploadid.split("_")[1] - 1));
                    $(this).children().eq(2).find(".delete-btn").attr("id", oldDelid.split("_")[0] + "_" + (oldDelid.split("_")[1] - 1));
                }
            });
            // 找到当前行,删除
            theCurrentTr.remove();
            // 修改新的input框中的值
            var delInputTag = $("#imgInput");
            var oldDelInputStrList = delInputTag.val().split(",");
            oldDelInputStrList.splice(currentDelIndex, 1);
            var delnewInputStr = oldDelInputStrList.join(",");
            delInputTag.val(delnewInputStr);
            // 修改全局可上传文件的总个数
            var $currentTotal = demoListView.data("choiceTotal");
            demoListView.data("choiceTotal", $currentTotal - 1);
        });

        // 填充管理员详情
        $.ajax({
            url: "/web/api/seller/detail?seller_id={{seller_id}}",
            type: "get",
            dataType: "json",
            success: function (response) {
                console.log(response);
                $("#qrshow").attr("src", response.data.qrcode_url);
                var faceList = response.data.face_url_list;
                demoListView.data("choiceTotal", faceList.length);
                if (faceList) {
                    for (var i = 0; i < faceList.length; i++) {
                        var trEle = document.createElement("tr");
                        var trHtml = '<td><img src="&#39; + faceList[i] + &#39;" alt="" style="height: 66px;width:100px;"></td>'
                            + '<td>等待修改</td><td><button type="button" class="layui-btn layui-btn-sm edit-btn" csid="choice_&#39; + i
                            + &#39;" startid="startUpload_&#39; + i + &#39;">修改</button><button type="button" class="layui-btn layui-btn-normal layui-btn-sm layui-hide choice-btn" id="choice_&#39; + i
                            + &#39;" style="margin-right: 10px;">选择图片</button><button type="button" class="layui-btn layui-btn-sm layui-hide upload-btn" id="startUpload_&#39; + i + &#39;">上传</button>' +
                            '<button type="button" class="layui-btn layui-btn-sm delete-btn" id="delete_&#39; + i + &#39;">删除</button></td>';
                        trEle.innerHTML = trHtml;
                        $("#imgList").append(trEle);
                    }
                }
                form.val("updateForm", {
                    "seller_id": response.data.id,
                    "name": response.data.name,
                    "code": response.data.code,
                    "address": response.data.address,
                    "contact": response.data.contact,
                    "cli_qrcode": response.data.cli_qrcode,
                    "old_cli_qrcode": response.data.cli_qrcode,
                    "face_img": response.data.face_img,
                    "old_face_img": response.data.face_img
                });
                form.render();
            }
        });

        // 绑定提交事件
        form.on("submit(addObject)", function (data) {
            $.ajax({
                url: "/web/api/seller/update",
                type: "post",
                data: data.field,
                dataType: "json",
                success: function (response) {
                    if (response["code"] == 0) {
                        layer.msg("更新成功", {
                            icon: 1,
                            time: 1500 // 1.5秒,默认三秒
                        }, function () { // 关闭回调,关闭层刷新页面
                            var index = parent.layer.getFrameIndex(window.name);  // 先得到当前iframe层的索引
                            parent.layer.close(index);
                        });
                    } else {
                        layer.msg(response["msg"], {
                            icon: 1,
                            time: 1500 // 1.5秒,默认三秒
                        });
                    }

                    return false;
                },
                error: function (response) {
                    layer.msg(response["msg"], {
                        icon: 1,
                        time: 1500 // 1.5秒,默认三秒
                    });
                    return false;
                }
            });

            return false; // 关闭表单提交(注意:此处不能省略,此处不能省略,此处不能省略。。。 否则页面刷新有问题)
        });
    });


</script>
</body>
</html>
登录后复制

更多layui知识请关注layui使用教程栏目。

以上是layui文件上传、预览及修改方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

layui登陆页面怎么设置跳转 layui登陆页面怎么设置跳转 Apr 04, 2024 am 03:12 AM

layui 登录页面跳转设置步骤:添加跳转代码:在登录表单提交按钮点击事件中添加判断,成功登录后通过 window.location.href 跳转到指定页面。修改 form 配置:在 lay-filter="login" 的 form 元素中添加 hidden 输入字段,name 为 "redirect",value 为目标页面地址。

layui怎么获取表单数据 layui怎么获取表单数据 Apr 04, 2024 am 03:39 AM

layui 提供了多种获取表单数据的方法,包括直接获取表单所有字段数据、获取单个表单元素值、使用 formAPI.getVal() 方法获取指定字段值、将表单数据序列化并作为 AJAX 请求参数,以及监听表单提交事件获取数据。

layui如何实现自适应 layui如何实现自适应 Apr 26, 2024 am 03:00 AM

通过使用layui框架的响应式布局功能,可以实现自适应布局。步骤包括:引用layui框架。定义自适应布局容器,设置layui-container类。使用响应式断点(xs/sm/md/lg)隐藏特定断点下的元素。利用网格系统(layui-col-)指定元素宽度。通过偏移量(layui-offset-)创建间距。使用响应式实用工具(layui-invisible/show/block/inline)控制元素的可见性和显示方式。

layui怎么传数据 layui怎么传数据 Apr 26, 2024 am 03:39 AM

使用 layui 传输数据的方法如下:使用 Ajax:创建请求对象,设置请求参数(URL、方法、数据),处理响应。使用内置方法:使用 $.post、$.get、$.postJSON 或 $.getJSON 等内置方法简化数据传输。

layui跟vue有啥区别 layui跟vue有啥区别 Apr 04, 2024 am 03:54 AM

layui与Vue的区别主要体现在功能和关注点上。layui专注于快速开发UI元素,提供预制组件简化页面构建;而Vue是一个全栈框架,注重数据绑定、组件化开发和状态管理,更适合构建复杂应用程序。 layui学习简单,适合快速构建页面;Vue学习曲线陡峭,但有助于构建可扩展和易维护的应用程序。根据项目需求和开发者技能水平,可以选择合适的框架。

layui怎么运行 layui怎么运行 Apr 04, 2024 am 03:42 AM

要运行 layui,请执行以下步骤:1. 导入 layui 脚本;2. 初始化 layui;3. 使用 layui 组件;4. 导入 layui 样式(可选);5. 确保脚本兼容并注意其他注意事项。通过这些步骤,您就可以使用 layui 的强大功能构建 web 应用程序。

layui是什么意思啊 layui是什么意思啊 Apr 04, 2024 am 04:33 AM

layui是一个前端UI框架,它提供了丰富的UI组件、工具和功能,帮助开发人员快速构建现代化、响应式和交互式Web应用程序,特点包括:灵活轻量、模块化设计、丰富的组件、强大的工具和易于定制。它广泛应用于各种Web应用程序的开发中,包括管理系统、电商平台、内容管理系统、社交网络和移动端应用。

layui框架是什么语言 layui框架是什么语言 Apr 04, 2024 am 04:39 AM

layui框架是一款基于JavaScript的前端框架,提供了一套易用的UI组件和工具,帮助开发者快速构建响应式Web应用。其特点包括:模块化、轻量级、响应式,并拥有完善的文档和社区支持。layui广泛应用于管理后台系统、电商网站和移动端应用等开发中。优点在于上手快、提高效率、维护方便,缺点是定制性较差、技术更新较慢。

See all articles