You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2 lines
7.2 KiB
2 lines
7.2 KiB
/** layui-v2.1.5 MIT License By http://www.layui.com */
|
|
; layui.define("layer", function (e) { "use strict"; var i = layui.$, t = layui.layer, n = layui.hint(), a = layui.device(), o = { config: {}, set: function (e) { var t = this; return t.config = i.extend({}, t.config, e), t }, on: function (e, i) { return layui.onevent.call(this, r, e, i) } }, l = function () { var e = this; return { upload: function (i) { e.upload.call(e, i) }, config: e.config } }, r = "upload", u = "layui-upload-file", c = "layui-upload-form", s = "layui-upload-iframe", f = "layui-upload-choose", p = function (e) { var t = this; t.config = i.extend({}, t.config, o.config, e), t.render() }; p.prototype.config = { accept: "images", exts: "", auto: !0, bindAction: "", url: "", field: "file", method: "post", data: {}, drag: !0, size: 0, multiple: !1 }, p.prototype.render = function (e) { var t = this, e = t.config; e.elem = i(e.elem), e.bindAction = i(e.bindAction), t.file(), t.events() }, p.prototype.file = function () { var e = this, t = e.config, n = e.elemFile = i(['<input class="' + u + '" type="file" name="' + t.field + '"', t.multiple ? " multiple" : "", ">"].join("")), o = t.elem.next(); (o.hasClass(u) || o.hasClass(c)) && o.remove(), a.ie && a.ie < 10 && t.elem.wrap('<div class="layui-upload-wrap"></div>'), e.isFile() ? (e.elemFile = t.elem, t.field = t.elem[0].name) : t.elem.after(n), a.ie && a.ie < 10 && e.initIE() }, p.prototype.initIE = function () { var e = this, t = e.config, n = i('<iframe id="' + s + '" class="' + s + '" name="' + s + '" frameborder="0"></iframe>'), a = i(['<form target="' + s + '" class="' + c + '" method="' + t.method, '" key="set-mine" enctype="multipart/form-data" action="' + t.url + '">', "</form>"].join("")); i("#" + s)[0] || i("body").append(n), t.elem.next().hasClass(s) || (e.elemFile.wrap(a), t.elem.next("." + s).append(function () { var e = []; return layui.each(t.data, function (i, t) { e.push('<input type="hidden" name="' + i + '" value="' + t + '">') }), e.join("") }())) }, p.prototype.msg = function (e) { return t.msg(e, { icon: 2, shift: 6 }) }, p.prototype.isFile = function () { var e = this.config.elem[0]; if (e) return "input" === e.tagName.toLocaleLowerCase() && "file" === e.type }, p.prototype.preview = function (e) { var i = this; window.FileReader && layui.each(i.chooseFiles, function (i, t) { var n = new FileReader; n.readAsDataURL(t), n.onload = function () { e && e(i, t, this.result) } }) }, p.prototype.upload = function (e, t) { var n, o = this, l = o.config, r = o.elemFile[0], u = function () { layui.each(e || o.files || o.chooseFiles || r.files, function (e, t) { var n = new FormData; n.append(l.field, t), layui.each(l.data, function (e, i) { n.append(e, i) }), i.ajax({ url: l.url, type: l.method, data: n, contentType: !1, processData: !1, dataType: "json", success: function (i) { d(e, i) }, error: function () { o.msg("请求上传接口出现异常"), m(e) } }) }) }, c = function () { var e = i("#" + s); o.elemFile.parent().submit(), clearInterval(p.timer), p.timer = setInterval(function () { var i, t = e.contents().find("body"); try { i = t.text() } catch (n) { o.msg("获取上传后的响应信息出现异常"), clearInterval(p.timer), m() } i && (clearInterval(p.timer), t.html(""), d(0, i)) }, 30) }, d = function (e, i) { if (o.elemFile.next("." + f).remove(), r.value = "", "object" != typeof i) try { i = JSON.parse(i) } catch (t) { return i = {}, o.msg("请对上传接口返回有效JSON") } "function" == typeof l.done && l.done(i, e || 0, function (e) { o.upload(e) }) }, m = function (e) { l.auto && (r.value = ""), "function" == typeof l.error && l.error(e || 0, function (e) { o.upload(e) }) }, v = l.exts, h = function () { var i = []; return layui.each(e || o.chooseFiles, function (e, t) { i.push(t.name) }), i }(), g = { preview: function (e) { o.preview(e) }, upload: function (e, i) { var t = {}; t[e] = i, o.upload(t) }, pushFile: function () { return o.files = o.files || {}, layui.each(o.chooseFiles, function (e, i) { o.files[e] = i }), o.files } }, y = function () { return "choose" === t ? l.choose && l.choose(g) : (l.before && l.before(g), a.ie ? a.ie > 9 ? u() : c() : void u()) }; switch (h = 0 === h.length ? r.value.match(/[^\/\\]+\..+/g) || [] || "" : h, l.accept) { case "file": if (v && !RegExp("\\w\\.(" + v + ")$", "i").test(escape(h))) return o.msg("选择的文件中包含不支持的格式"), r.value = ""; break; case "video": if (!RegExp("\\w\\.(" + (v || "avi|mp4|wma|rmvb|rm|flash|3gp|flv") + ")$", "i").test(escape(h))) return o.msg("选择的视频中包含不支持的格式"), r.value = ""; break; case "audio": if (!RegExp("\\w\\.(" + (v || "mp3|wav|mid") + ")$", "i").test(escape(h))) return o.msg("选择的音频中包含不支持的格式"), r.value = ""; break; default: if (layui.each(h, function (e, i) { RegExp("\\w\\.(" + (v || "jpg|png|gif|bmp|jpeg$") + ")", "i").test(escape(i)) || (n = !0) }), n) return o.msg("选择的图片中包含不支持的格式"), r.value = "" }if (l.size > 0 && !(a.ie && a.ie < 10)) { var F; if (layui.each(o.chooseFiles, function (e, i) { if (i.size > 1024 * l.size) { var t = l.size / 1024; t = t >= 1 ? Math.floor(t) + (t % 1 > 0 ? t.toFixed(1) : 0) + "MB" : l.size + "KB", r.value = "", F = t } }), F) return o.msg("文件不能超过" + F) } y() }, p.prototype.events = function () { var e = this, t = e.config, o = function (i) { e.chooseFiles = {}, layui.each(i, function (i, t) { var n = (new Date).getTime(); e.chooseFiles[n + "-" + i] = t }) }, l = function (i, n) { var a = e.elemFile, o = i.length > 1 ? i.length + "个文件" : (i[0] || {}).name || a[0].value.match(/[^\/\\]+\..+/g) || [] || ""; a.next().hasClass(f) && a.next().remove(), e.upload(null, "choose"), e.isFile() || t.choose || a.after('<span class="layui-inline ' + f + '">' + o + "</span>") }; t.elem.off("upload.start").on("upload.start", function () { var a = i(this), o = a.attr("lay-data"); if (o) try { o = new Function("return " + o)(), e.config = i.extend({}, t, o) } catch (l) { n.error("Upload element property lay-data configuration item has a syntax error: " + o) } e.config.item = a, e.elemFile[0].click() }), a.ie && a.ie < 10 || t.elem.off("upload.over").on("upload.over", function () { var e = i(this); e.attr("lay-over", "") }).off("upload.leave").on("upload.leave", function () { var e = i(this); e.removeAttr("lay-over") }).off("upload.drop").on("upload.drop", function (n, a) { var r = i(this), u = a.originalEvent.dataTransfer.files || []; r.removeAttr("lay-over"), o(u), t.auto ? e.upload(u) : l(u) }), e.elemFile.off("upload.change").on("upload.change", function () { var i = this.files || []; o(i), t.auto ? e.upload() : l(i) }), t.bindAction.off("upload.action").on("upload.action", function () { e.upload() }), t.elem.data("haveEvents") || (e.elemFile.on("change", function () { i(this).trigger("upload.change") }), t.elem.on("click", function () { e.isFile() || i(this).trigger("upload.start") }), t.drag && t.elem.on("dragover", function (e) { e.preventDefault(), i(this).trigger("upload.over") }).on("dragleave", function (e) { i(this).trigger("upload.leave") }).on("drop", function (e) { e.preventDefault(), i(this).trigger("upload.drop", e) }), t.bindAction.on("click", function () { i(this).trigger("upload.action") }), t.elem.data("haveEvents", !0)) }, o.render = function (e) { var i = new p(e); return l.call(i) }, e(r, o) });
|