天天看點

layui upload 實作多檔案上傳

**

layui upload 實作多檔案上傳

**

js引用:layui.js

下面展示代碼:

var opera = layer.open({
                    type: 1,
                    title: '批量導入',
                    area: ['720px', '440px'], // 寬高
                    btnAlign: 'r', //'l'按鈕左對齊,'c'按鈕居中對齊,'r'按鈕右對齊,預設右邊
                    shadeClose: false, // 點選陰影關閉彈框
                    closeBtn: false,
                    content: '<div class="layui-upload">' +
                        '  <button type="button" style="margin-top: 10px;margin-left: 10px;" class="btn btn-primary btn-sm btn-rounded mgnR15" id="testList">選擇多檔案</button> ' +
                        '  <div class="layui-upload-list">' +
                        '    <table class="layui-table">' +
                        '      <thead>' +
                        '        <tr><th>檔案名</th>' +
                        '        <th>大小</th>' +
                        '        <th>狀态</th>' +
                        '        <th>操作</th>' +
                        '      </tr></thead>' +
                        '      <tbody id="demoList"></tbody>' +
                        '    </table>' +
                        '  </div>' +
                        '<div class="footer-div">' +
                        '  <button type="button" class="upload-btn0" id="testListAction">導入鎖具資訊</button>' +
                        '  <button type="button" class="upload-btn1" οnclick="closeUpload()">取消</button>' +
                        '</div>' +
                        '</div> ',
                    success: function () {
                        layui.use('upload', function () {
                            var $ = layui.jquery,
                                upload = layui.upload;
                            //多檔案清單示例
                            var demoListView = $('#demoList'),
                                uploadListIns = upload.render({
                                    elem: '#testList',
                                    url: '/lockInfo/uploadExcel', //上傳接口
                                    accept: 'file', //指定允許上傳時校驗的檔案類型
                                    multiple: true, //是否允許多檔案上傳
                                    exts: 'xls|xlsx',
                                    auto: false, //是否選完檔案後自動上傳
                                    bindAction: '#testListAction', //指向一個按鈕觸發上傳
                                    number: 10, //設定同時可上傳的檔案數量
                                    field: 'uploadExcel', //設定檔案域的字段名
                                    choose: function (obj) {
                                        var files = this.files = obj.pushFile(); //将每次選擇的檔案追加到檔案隊列
                                        //讀取本地檔案
                                        obj.preview(function (index, file, result) {
                                            var tr = $(['<tr id="upload-' + index + '">',
                                            '<td>' + file.name + '</td>',
                                            '<td>' + (file.size / 1024).toFixed(1) + 'kb</td>',
                                                '<td>等待上傳</td>',
                                                '<td>',
                                                '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重傳</button>',
                                                '<button class="layui-btn layui-btn-xs 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);
                                        });
                                    },
                                    done: function (res, index, upload) {
                                        if (res.files.file) { //上傳成功
                                            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]; //删除檔案隊列已經上傳成功的檔案
                                            layer.close(opera);
                                        }
                                        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'); //顯示重傳
                                    }
                                });
                        })

                        // 關閉批量導入彈窗
                        window.closeUpload = function () {
                            layer.close(opera);     //執行關閉   
                        }

                    }
                });
           

繼續閱讀