【发布时间】:2016-12-28 22:11:15
【问题描述】:
电子版:1.3.3 操作系统:Ubuntu 14.04
我想使用 Electron 将 XML 对象保存到 .xml 文件中。我试试这个:
const {dialog} = require("electron").remote;
dialog.showSaveDialog(myObj)
【问题讨论】:
标签: javascript dialog electron
电子版:1.3.3 操作系统:Ubuntu 14.04
我想使用 Electron 将 XML 对象保存到 .xml 文件中。我试试这个:
const {dialog} = require("electron").remote;
dialog.showSaveDialog(myObj)
【问题讨论】:
标签: javascript dialog electron
showSaveDialog() API 不会为您保存文件。您必须使用返回的路径并使用 Node 来保存您的文件。
const {dialog} = require('electron').remote;
const fs = require('fs');
dialog.showSaveDialog({}).then((result) => {
fs.writeFile(result.filePath, MyFileData, (err) => {
// file saved or err
});
}).catch((err) => {
// err
});
【讨论】:
建议在新版本的electron中使用dialog.showSaveDialog返回的路径来获取filepath:(在下面的代码中为result.filePath)
filename = dialog.showSaveDialog({}
).then(result => {
filename = result.filePath;
if (filename === undefined) {
alert('the user clicked the btn but didn\'t created a file');
return;
}
fs.writeFile(filename, content, (err) => {
if (err) {
alert('an error ocurred with file creation ' + err.message);
return
}
alert('WE CREATED YOUR FILE SUCCESFULLY');
})
alert('we End');
}).catch(err => {
alert(err)
})
【讨论】:
result 作为文件名对我有用,现在它停止工作,我不得不使用result.filePath。是否有 API 更改?
showSaveDialog 返回一个 callback(不是 Promise 直到 2019 年 7 月 20 日(版本 6.0.0))并且该回调只有一个参数那是filePath,但在 v2.0.0 之后,它开始获得更多选项 - 您可以查看 here 以查看按版本分类的文档