8

ファイルを保存するためのダイアログを開くファイルを指す通常のアンカー タグを持つことは可能ですか? ウェブブラウザのように。

例えば:

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

そして、クリック時にファイルの保存ダイアログをトリガーするアンカータグを持っていますか?

使用file://absolute-path-to-the-dir/documents/somefile.pdfしてみましたが、ファイルをダウンロードするのではなく、アプリケーションで開きたいと思っています。

更新: この質問を書いたときに使用したよりも新しいバージョンの Electron では、動作が希望どおりになり、ユーザーにファイルを保存するように求めるウィンドウが開きます。

ただし、外部リンクの場合で、Electron ウィンドウを内部リンク用にのみ保持し、デフォルトの OS 選択で外部リンクを開きたい場合、Joshua Smith による回答はまさにそれを行うことができます。

4

2 に答える 2

7

スクリプトでは、ダイアログ モジュールを使用してファイルの保存ダイアログを使用できます。

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

于 2015-11-13T13:23:06.413 に答える
3

私がやっていることは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() が使用されていることを確認し、ユーザーのブラウザーでダウンロードが行われるようにします。

于 2016-03-10T19:20:11.527 に答える