我正在写一个NodeJS电子应用程序在所有平台上分发。我有一个下载按钮,我想弹出一个保存为对话框与文件正在提供的服务器。有人知道最好的方法来做到这一点吗?
以下是我在本地运行节点应用程序时尝试过的工作方式,但在我使用电子打包程序打包应用程序后失败:
- 将window.location.href设置为文件的位置
- 将隐藏iframe的src设置为文件的位置
当运行打包的mac应用程序时,“did-fail-load”事件被触发,并阻止“保存为”对话框显示。当查看网络请求时,我可以看到文件从服务器成功检索。我似乎不明白为什么“did-fail-load”事件被触发。
4条答案
按热度按时间ux6nzvsh1#
请在电子文档https://github.com/atom/electron/blob/master/docs/api/dialog.md上查看此页
有一个关于对话框的部分。showSaveDialog
然后,您可以使用保存对话框中的URL和类似于下面的功能将其保存到该位置。
在此页面上找到https://github.com/atom/electron/blob/master/docs/api/session.md
pjngdqdw2#
如果你只想使用渲染器,下面是一个例子。点击电子将显示标准浏览器的保存为对话框。不需要
remote
或fs
。在渲染器javascript文件中:
(我用的是Mac,还没有在Windows机器上试过)
gwo2fgha3#
在HTML按钮上:
在javascript文件中:
cwdobuhd4#
我遇到这个问题是为了寻找相反的效果--如何在电子应用程序中下载一个文件而不显示保存对话框。
如果您在will-download事件处理程序中设置了路径,那么Electron将跳过显示对话框。例如(从https://www.electronjs.org/docs/latest/api/download-item)