【发布时间】:2021-09-11 05:30:06
【问题描述】:
我目前的设置:
- 将画布转换为 blob。
- 向用户询问文件路径。
- 将 blob 保存在用户指定的位置。
但是,我无法执行第 3 步。我目前正在尝试使用 fs 来完成这项工作,但它似乎并没有真正保存文件。
当前代码:
canvas.toBlob(blob => {
remote.dialog.showSaveDialog({ defaultPath: "file.png" }).then((canceled, filepath) => {
if (filepath) { // Using filepath because canceled is always true for some reason
blob.arrayBuffer().then(arrayBuffer => {
console.log(arrayBuffer);
fs.writeFile(filepath, Buffer.from(arrayBuffer), err => {
if (err) throw err;
});
});
}
});
}, "image/png");
我的代码有任何缺陷吗?我尝试将 Buffer 更改为 Uint8Array 和 Int8Array,但它们也不起作用。
【问题讨论】:
-
控制台有错误吗?
-
您可以尝试在传递给
writeFile的回调中添加一些console.log,在if (err) throw err之后,以确保此异步操作已完成。 -
控制台没有错误,writeFile回调中已经有
if (err) throw err;了。
标签: javascript electron fs