diff --git a/app/src/editor/rename.ts b/app/src/editor/rename.ts index d74d844bf..928fd3b02 100644 --- a/app/src/editor/rename.ts +++ b/app/src/editor/rename.ts @@ -22,6 +22,10 @@ export const replaceFileName = (name: string) => { return name.replace(/\r\n|\r|\n|\u2028|\u2029|\t|\//g, ""); }; +export const replaceLocalPath = (name: string) => { + return name.replace(/\\\\|\/|:|\*|\?|\\|'|<|>|\|/g, ""); +}; + export const rename = (options: { path: string notebookId: string diff --git a/app/src/protyle/export/index.ts b/app/src/protyle/export/index.ts index c52b1e85d..e9b8a0513 100644 --- a/app/src/protyle/export/index.ts +++ b/app/src/protyle/export/index.ts @@ -13,6 +13,7 @@ import {fetchPost} from "../../util/fetch"; import {Dialog} from "../../dialog"; import {lockFile} from "../../dialog/processSystem"; import {pathPosix} from "../../util/pathName"; +import {replaceLocalPath} from "../../editor/rename"; export const saveExport = (option: { type: string, id: string }) => { /// #if !BROWSER @@ -176,7 +177,7 @@ const getExportPath = (option: { type: string, id: string }, pdfOption?: PrintTo } else if (option.type === "word") { url = "/api/export/exportDocx"; } - const savePath = result.filePaths[0].endsWith(response.data.rootTitle) ? result.filePaths[0] : path.join(result.filePaths[0], response.data.rootTitle); + const savePath = result.filePaths[0].endsWith(response.data.rootTitle) ? result.filePaths[0] : path.join(result.filePaths[0], replaceLocalPath(response.data.rootTitle)); fetchPost(url, { id: option.id, pdf: option.type === "pdf",