【问题标题】:Save file from anchor tag using Electron使用 Electron 从锚标签保存文件
【发布时间】:2015-07-14 00:05:20
【问题描述】:

是否可以让常规锚标记指向打开对话框以保存文件的文件?就像网络浏览器一样。

例如:

<a download href="documents/somefile.pdf">Download</a>

并让该锚标记在点击时触发保存文件对话框?

我试过使用file://absolute-path-to-the-dir/documents/somefile.pdf,它想在应用程序中打开文件而不是下载它。

更新: 在比我写这个问题时使用的更高版本的 Electron 中,行为是我想要的,会打开一个窗口,要求用户保存文件。

但是,在外部链接的情况下,想要只为内部链接保留 Electron 窗口并在默认操作系统选项中打开外部链接,Joshua Smith 的回答可以做到这一点。

【问题讨论】:

  • 运气好能找到解决方案吗?我想做同样的事情。
  • @MobileSam 目前没有。我暂时放弃了尝试。等我有时间再找答案。
  • 经过一番研究,我在这里找到了答案:discuss.atom.io/t/…

标签: javascript electron


【解决方案1】:

在脚本中,您可以通过对话框模块使用保存文件对话框:

var fs = require('fs');
var dialog = require('dialog');
dialog.showSaveDialog(options, function (filePath) {
    fs.writeFile(filePath, pdfContents, function (err) {
        if(err) console.error(err);
    });
});

这是文档:

https://github.com/atom/electron/blob/master/docs/api/dialog.md#dialogshowsavedialogbrowserwindow-options-callback

【讨论】:

    【解决方案2】:

    我在做的是两方面的。

    mainWindow.webContents.on('new-window', function(event, url) {
        event.preventDefault();
        console.log("Handing off to O/S: "+url);
        shell.openExternal(url);
    });
    

    这样,每当我的应用程序中的页面想要打开一个新窗口时,都会在实际浏览器中发生。这也适用于打开 PDF 等。

    然后我只需确保任何下载链接都使用 target=_blank 或 window.open() 并且下载将在用户的浏览器中进行。

    【讨论】:

    • 对于电子新手:shell 是 require("electron").shell;
    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 2020-04-27
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    相关资源
    最近更新 更多