使用 Electron 从锚标记保存文件
Save file from anchor tag using Electron
是否可以使用指向文件的常规锚标记来打开保存文件的对话框?就像网络浏览器一样。
例如:
<a download href="documents/somefile.pdf">Download</a>
并让锚标记在点击时触发保存文件对话框?
我试过使用 file://absolute-path-to-the-dir/documents/somefile.pdf
,它想在应用程序中打开文件而不是下载文件。
更新:
在比我写这个问题时使用的更高版本的 Electron 中,行为是我想要的,一个 window 打开要求用户保存文件。
但是,在外部链接的情况下,想要保留 Electron window 仅用于内部链接并在默认 OS 选择中打开外部链接,Joshua Smith 的答案可以做到正是这样。
在脚本中,您可以通过对话框模块使用保存文件对话框:
var fs = require('fs');
var dialog = require('dialog');
dialog.showSaveDialog(options, function (filePath) {
fs.writeFile(filePath, pdfContents, function (err) {
if(err) console.error(err);
});
});
这是文档:
我正在做的是双重的。
mainWindow.webContents.on('new-window', function(event, url) {
event.preventDefault();
console.log("Handing off to O/S: "+url);
shell.openExternal(url);
});
就是这样,每当我的应用程序中的一个页面想要打开一个新的 window 时,它就会在实际的浏览器中发生。这也适用于打开 PDF 等文件。
然后我只需确保所有下载链接都使用 target=_blank 或 window.open() 并且下载将在用户的浏览器中进行。
是否可以使用指向文件的常规锚标记来打开保存文件的对话框?就像网络浏览器一样。
例如:
<a download href="documents/somefile.pdf">Download</a>
并让锚标记在点击时触发保存文件对话框?
我试过使用 file://absolute-path-to-the-dir/documents/somefile.pdf
,它想在应用程序中打开文件而不是下载文件。
更新: 在比我写这个问题时使用的更高版本的 Electron 中,行为是我想要的,一个 window 打开要求用户保存文件。
但是,在外部链接的情况下,想要保留 Electron window 仅用于内部链接并在默认 OS 选择中打开外部链接,Joshua Smith 的答案可以做到正是这样。
在脚本中,您可以通过对话框模块使用保存文件对话框:
var fs = require('fs');
var dialog = require('dialog');
dialog.showSaveDialog(options, function (filePath) {
fs.writeFile(filePath, pdfContents, function (err) {
if(err) console.error(err);
});
});
这是文档:
我正在做的是双重的。
mainWindow.webContents.on('new-window', function(event, url) {
event.preventDefault();
console.log("Handing off to O/S: "+url);
shell.openExternal(url);
});
就是这样,每当我的应用程序中的一个页面想要打开一个新的 window 时,它就会在实际的浏览器中发生。这也适用于打开 PDF 等文件。
然后我只需确保所有下载链接都使用 target=_blank 或 window.open() 并且下载将在用户的浏览器中进行。