diff --git a/app/src/editor/util.ts b/app/src/editor/util.ts index 29b91b49b..86c882f9b 100644 --- a/app/src/editor/util.ts +++ b/app/src/editor/util.ts @@ -477,6 +477,9 @@ export const openBy = (url: string, type: "folder" | "app") => { address = url.replace("file://", ""); } if (type === "app") { + // 拖入文件名包含 `)` 的文件以 `file://` 插入后链接解析错误 https://github.com/siyuan-note/siyuan/issues/5786 + address = address.replace(/\\\)/g, ")") + shell.openPath(address); } else if (type === "folder") { shell.showItemInFolder(address); diff --git a/app/src/protyle/util/editorCommonEvent.ts b/app/src/protyle/util/editorCommonEvent.ts index 2e11f10be..0775b8e40 100644 --- a/app/src/protyle/util/editorCommonEvent.ts +++ b/app/src/protyle/util/editorCommonEvent.ts @@ -1,4 +1,4 @@ -import {focusBlock, focusByWbr, focusByRange} from "./selection"; +import {focusBlock, focusByRange, focusByWbr} from "./selection"; import {hasClosestBlock, hasClosestByAttribute, hasClosestByClassName} from "./hasClosest"; import {Constants} from "../../constants"; import {paste} from "./paste"; @@ -719,6 +719,11 @@ export const dropEvent = (protyle: IProtyle, editorElement: HTMLElement) => { files.forEach((item) => { fileText += `[${path.basename(item)}](file://${item})\n`; }); + + // 拖入文件名包含 `)` 的文件以 `file://` 插入后链接解析错误 https://github.com/siyuan-note/siyuan/issues/5786 + fileText = fileText.replace(/\)/g, "\\)"); + fileText = fileText.substring(0, fileText.length - 3) + ")" + insertHTML(protyle.lute.SpinBlockDOM(fileText), protyle); } else { uploadLocalFiles(files, protyle);