From d7e01521ab66ccfdb25003d5003cfab9d0883052 Mon Sep 17 00:00:00 2001 From: Frankie Huang Date: Sun, 6 Apr 2025 19:44:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=20editor.md=20?= =?UTF-8?q?=E7=9A=84=20image-dialog=20=E6=8F=92=E4=BB=B6=E4=BB=A3=E7=A0=81?= =?UTF-8?q?,=E9=87=8D=E5=86=99=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugins/image-dialog/image-dialog.js | 59 +++++++++++++------ 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/public/static/editor.md/plugins/image-dialog/image-dialog.js b/public/static/editor.md/plugins/image-dialog/image-dialog.js index b49482f..4f6ecda 100644 --- a/public/static/editor.md/plugins/image-dialog/image-dialog.js +++ b/public/static/editor.md/plugins/image-dialog/image-dialog.js @@ -46,12 +46,15 @@ action += "&callback=" + settings.uploadCallbackURL + "&dialog_id=editormd-image-dialog-" + guid; } - var dialogContent = ( (settings.imageUpload) ? "
" : "
" ) + + var imageFileName = classPrefix + "image-file"; + // 删除 method="post" 让表单不会触发提交。后面使用 ajax 重写图片上传请求 + var dialogContent = ( (settings.imageUpload) ? "" : "
" ) + ( (settings.imageUpload) ? "" : "" ) + "" + "" + (function(){ return (settings.imageUpload) ? "
" + - "" + + // 这里增加 id = {imageFileName},方便后面拿到文件数据 + "" + "" + "
" : ""; })() + @@ -131,7 +134,7 @@ return ; } - var fileInput = dialog.find("[name=\"" + classPrefix + "image-file\"]"); + var fileInput = dialog.find("[name=\"" + imageFileName + "\"]"); fileInput.bind("change", function() { var fileName = fileInput.val(); @@ -161,23 +164,45 @@ loading(false); - var body = (uploadIframe.contentWindow ? uploadIframe.contentWindow : uploadIframe.contentDocument).document.body; - var json = (body.innerText) ? body.innerText : ( (body.textContent) ? body.textContent : null); + // 注释掉官方写法,这里存在 iframe 跨域问题 + // var body = (uploadIframe.contentWindow ? uploadIframe.contentWindow : uploadIframe.contentDocument).document.body; + // var json = (body.innerText) ? body.innerText : ( (body.textContent) ? body.textContent : null); - json = (typeof JSON.parse !== "undefined") ? JSON.parse(json) : eval("(" + json + ")"); + // json = (typeof JSON.parse !== "undefined") ? JSON.parse(json) : eval("(" + json + ")"); - if(!settings.crossDomainUpload) - { - if (json.success === 1) - { - dialog.find("[data-url]").val(json.url); - } - else - { - alert(json.message); - } - } + // if(!settings.crossDomainUpload) + // { + // if (json.success === 1) + // { + // dialog.find("[data-url]").val(json.url); + // } + // else + // { + // alert(json.message); + // } + // } + // 重写图片上传方法 + var formData = new FormData(); + formData.append(imageFileName, $("#" + imageFileName)[0].files[0]); + var action = settings.imageUploadURL + (settings.imageUploadURL.indexOf("?") >= 0 ? "&" : "?") + "guid=" + guid; + $.ajax({ + url: action, + type: "POST", + data: formData, + dataType: "json", + async: false, + processData: false, // 使数据不做处理 + contentType: false, // 不要设置 Content-Type 请求头 + success: function (data) { + // 成功拿到结果放到这个函数 data就是拿到的结果 + if (data.success === 1) { + dialog.find("[data-url]").val(data.url); + } else { + alert(data.message); + } + }, + }); return false; }; };