如何在电子应用程序中显示另存为对话框?

我正在写一个NodeJS电子应用程序在所有平台上分发。 我有一个下载button,我想用服务器提供的文件popup一个“另存为”对话框。 有人知道这样做的最好方法吗?

以下是我在本地运行节点应用程序时尝试过的工作,但在使用electron-packager打包应用程序后失败:

  • 将window.location.href设置为文件的位置
  • 将隐藏的iframe的src设置为文件的位置

运行打包的mac应用程序时,“did-fail-load”事件被触发,并阻止显示“另存为”对话框。 查看networking请求时,可以看到从服务器成功检索到该文件。 我似乎无法弄清楚为什么“did-fail-load”事件正在被解雇。

看看这个电子文档https://github.com/atom/electron/blob/master/docs/api/dialog.md

有一个关于dialog.showSaveDialog的部分

然后,您可以使用保存对话框中的URL,并使用类似于下面的function将其保存到该位置。

session.on('will-download', function(event, item, webContents) { event.preventDefault(); require('request')(item.getUrl(), function(data) { require('fs').writeFileSync('/somewhere', data); }); }); 

在此页面发现https://github.com/atom/electron/blob/master/docs/api/session.md