{"record":{"id":"86b4330ca6eabcf8","repo":"siyuan-note/siyuan","slug":"window-siyuan-languages-exportfilesavefailed","errorCode":null,"errorMessage":"window.siyuan.languages.exportFileSaveFailed","messagePattern":"window\\.siyuan\\.languages\\.exportFileSaveFailed","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/protyle/export/util.ts","lineNumber":178,"sourceCode":"        outputting = true;\n        setActionDisabled(true);\n        const msgId = showMessage(window.siyuan.languages.exporting, 0);\n        const containerElement = exportDialog.element.querySelector(\".b3-dialog__container\") as HTMLElement;\n        const oldHeight = containerElement.style.height;\n        containerElement.style.height = \"\";\n        /// #if MOBILE\n        containerElement.style.width = \"100vw\";\n        /// #endif\n        const contentElement = exportDialog.element.querySelector(\".b3-dialog__content\") as HTMLElement;\n        const oldOverflow = contentElement.style.overflow;\n        contentElement.style.overflow = \"hidden\";\n        if (!copyOnly) {\n            setStorageVal(Constants.LOCAL_EXPORTIMG, window.siyuan.storage[Constants.LOCAL_EXPORTIMG]);\n        }\n        try {\n            const blob = await renderImageBlob();\n            if (!blob) {\n                throw new Error(window.siyuan.languages.exportFileSaveFailed);\n            }\n            if (type === \"copy\") {\n                let copied: boolean;\n                if (isInAndroid()) {\n                    const response = await uploadImageBlob(blob);\n                    copied = response.code === 0;\n                    if (copied) {\n                        copyPNGByLink(response.data.file);\n                    }\n                } else {\n                    copied = await writePNGBlob(blob);\n                }\n                hideMessage(msgId);\n                if (!copied) {\n                    return;\n                }\n                showMessage(window.siyuan.languages.copied);\n            } else {","sourceCodeStart":160,"sourceCodeEnd":196,"githubUrl":"https://github.com/siyuan-note/siyuan/blob/8641553a1f07374001902d3ce773285db1292b2d/app/src/protyle/export/util.ts#L160-L196","documentation":"In outputImage (image export flow), the save/export step failed and the localized message exportFileSaveFailed is reported. The exported image could not be written, uploaded, or copied, e.g. the kernel save call failed or the OS clipboard/IPC write was rejected.","triggerScenarios":"Thrown at app/src/protyle/export/util.ts:178 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check free disk space and write permissions for the export directory","On Android verify uploadImageBlob succeeded before copy","Retry the export after closing other dialogs that may hold the clipboard"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"8641553a1f07374001902d3ce773285db1292b2d","analyzedAt":"2026-09-11T16:08:28.414Z","contentChangedAt":"2026-09-11T16:08:28.414Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}