/** * name: File Upload * author: AMing * version: 1.4.2 * create date: 2020-11-08 * update date: 2021-03-11 */ var Upload; (function (Upload) { var Files = /** @class */ (function () { function Files(el_btn, options) { if (options === void 0) { options = null; } this.el_btn = el_btn; this.class_name = "upload-img"; this.options = { upload_url: "", accept: "", multiple: false, upload_in_select: true, max_size: Files.toMB(2), success_func: function () { }, file_fail_func: function (files) { if (!!files && files.length > 0) { for (var i = 0; i < files.length; i++) { var item = files[i]; ImageHelper.showError(item.name + "\uFF0C\u56FE\u7247\u8FC7\u5927\u8BF7\u9009\u62E9\u5C0F\u4E8E2M\u7684\u56FE\u7247"); } } } }; this.init(options); } Files.prototype.isInit = function () { return !this.el_btn || this.el_btn.classList.contains(this.class_name); }; Files.prototype.createFileInput = function () { this.el_file = document.createElement("input"); this.el_file.type = "file"; this.el_file.accept = this.options.accept; this.el_file.style.opacity = "0"; this.el_file.style.width = "0"; this.el_file.style.height = "0"; this.el_file.multiple = this.options.multiple; document.body.appendChild(this.el_file); this.el_btn.classList.add(this.class_name); }; Files.prototype.selectFile = function () { this.el_file.click(); }; Files.prototype.onResult = function (data) { if (!!this.options.success_func) { this.options.success_func(data); } }; Files.prototype.onFileFail = function (data) { if (!!this.options.file_fail_func) { this.options.file_fail_func(data); } }; Files.prototype.checkFileSize = function (file) { if (this.options.max_size <= 0) { return true; } return file.size <= this.options.max_size; }; Files.prototype.getFileList = function (files) { var file_list = [], file_fail_list = []; if (files.length > 0) { for (var i = 0; i < files.length; i++) { var item_file = files[i]; if (this.checkFileSize(item_file)) { file_list.push(item_file); } else { file_fail_list.push(item_file); } } if (file_fail_list.length > 0) { this.onFileFail(file_fail_list); } } return file_list; }; Files.prototype.upload = function (files) { var _this = this; var file_list = this.getFileList(files); if (file_list.length <= 0) { return; } var form_data = new FormData(); for (var i = 0; i < file_list.length; i++) { var item_file = file_list[i]; form_data.append("file" + i, item_file); } var xhr = new XMLHttpRequest(); xhr.open("post", this.options.upload_url, true); xhr.upload.addEventListener("timeout", function (e) { _this.onResult({ state: 0, error: "timeout" }); }); xhr.upload.addEventListener("error", function (e) { _this.onResult({ state: 0, error: e }); }); xhr.upload.addEventListener("abort", function (e) { _this.onResult({ state: 0, error: "abort" }); }); xhr.onload = function (e) { try { var text = e.target.responseText; _this.onResult({ state: 1, data: text }); } catch (e) { _this.onResult({ state: 0, error: e }); } }; xhr.send(form_data); this.el_file.value = ""; }; Files.prototype.initOptions = function (data) { if (!!data) { for (var key in data) { if (Object.prototype.hasOwnProperty.call(data, key)) { this.options[key] = data[key]; } } } }; Files.prototype.initEL = function () { this.createFileInput(); }; Files.prototype.initEvent = function () { var _this = this; this.el_btn.addEventListener("click", function (e) { return _this.selectFile(); }); this.el_file.addEventListener("change", function (e) { if (!!_this.options.upload_in_select) { _this.upload(e.currentTarget.files); } }); }; Files.prototype.init = function (options) { if (this.isInit()) { return; } this.initOptions(options); this.initEL(); this.initEvent(); }; Files.toKB = function (data) { return data * 1024; }; Files.toMB = function (data) { return data * 1024 * 1024; }; return Files; }()); Upload.Files = Files; var ImageHelper = /** @class */ (function () { function ImageHelper() { } ImageHelper.setCallback = function (btn_id, callback) { var _this = this; var el_btn = document.getElementById(btn_id); var upload = new Files(el_btn, { upload_url: this.upload_url, success_func: function (e) { if (e.state == 1) { callback(e.data); } else { _this.showError(e.error); } } }); }; ImageHelper.set = function (btn_id, txt_id) { var el_txt = document.getElementById(txt_id); this.setCallback(btn_id, function (url) { el_txt.value = url; $(el_txt).trigger("change"); }); }; ImageHelper.setInput = function (name) { this.set("btn_" + name, name); }; ImageHelper.showError = function (e) { }; return ImageHelper; }()); Upload.ImageHelper = ImageHelper; var Kindeditor = /** @class */ (function () { function Kindeditor(settings) { var _this = this; this.settings = settings; this.file_list = []; this.uploading = false; console.log(settings); settings.button_placeholder.value = "\u9009\u62E9\u56FE\u7247"; var upload = new Files(settings.button_placeholder, { upload_url: settings.upload_url, multiple: true, upload_in_select: false, success_func: function (e) { if (e.state == 1) { //callback(e.data); } else { ImageHelper.showError(e.error); } } }); upload.el_file.addEventListener("change", function (e) { var files = e.currentTarget.files; var file_list = upload.getFileList(files); if (file_list.length > 0) { for (var i = 0; i < file_list.length; i++) { var item_file = file_list[i]; var file_data = { id: _this.getFileID(i), name: item_file.name, data: item_file, filestatus: -1, is_upload: false }; settings.file_queued_handler(file_data); _this.addFile(file_data); } } }); } Kindeditor.prototype.getFileID = function (index) { return new Date().getTime() + "_" + index; }; Kindeditor.prototype.startUpload = function () { //if (this.file_list.length > 0) { // for (let i = 0; i < this.file_list.length; i++) { // let item = this.file_list[i]; // this.upload(item); // } //} this.upload_next(); }; Kindeditor.prototype.addFile = function (data) { var has_item = false; for (var i = 0; i < this.file_list.length; i++) { var item = this.file_list[i]; if (item.id == data.id) { has_item = true; } } if (!has_item) { this.file_list.push(data); } }; Kindeditor.prototype.removeFile = function (id) { var index = -1; for (var i = 0; i < this.file_list.length; i++) { var item = this.file_list[i]; if (item.id == id) { index = i; } } if (index >= 0) { this.file_list.splice(index, 1); } }; Kindeditor.prototype.upload = function (file) { var _this = this; if (this.uploading || file.filestatus == -4) { return; } this.uploading = true; var form_data = new FormData(); form_data.append("file", file.data); var xhr = new XMLHttpRequest(); xhr.open("post", this.settings.upload_url, true); xhr.upload.addEventListener("timeout", function (e) { file.filestatus = -3; _this.settings.upload_error_handler(file, -1, "timeout"); _this.upload_complete(file); }); xhr.upload.addEventListener("error", function (e) { file.filestatus = -3; _this.settings.upload_error_handler(file, -1, e); _this.upload_complete(file); }); xhr.upload.addEventListener("abort", function (e) { file.filestatus = -5; _this.settings.upload_error_handler(file, -1, "abort"); _this.upload_complete(file); }); xhr.upload.addEventListener("progress", function (e) { file.filestatus = -2; _this.settings.upload_progress_handler(file, e.loaded, e.total); }); xhr.onload = function (e) { try { var text = e.target.responseText; file.filestatus = -4; _this.settings.upload_success_handler(file, text); } catch (e) { file.filestatus = -3; _this.settings.upload_error_handler(file, -1, e); } _this.upload_complete(file); }; xhr.send(form_data); this.settings.upload_start_handler(file); }; Kindeditor.prototype.upload_complete = function (file) { file.is_upload = true; this.uploading = false; this.upload_next(); }; Kindeditor.prototype.upload_next = function () { var _this = this; if (this.uploading) { return; } if (this.file_list.length > 0) { var _loop_1 = function (i) { var item = this_1.file_list[i]; if (!item.is_upload) { setTimeout(function () { return _this.upload(item); }, 400); return { value: void 0 }; } }; var this_1 = this; for (var i = 0; i < this.file_list.length; i++) { var state_1 = _loop_1(i); if (typeof state_1 === "object") return state_1.value; } } }; return Kindeditor; }()); Upload.Kindeditor = Kindeditor; })(Upload || (Upload = {})); Upload.ImageHelper.showError = function (msg) { return alert(msg); }; 久草小区二区三区四区网页