web-dev-qa-db-ja.com

electronアプリ内にファイルをダウンロードして保存する

私は最初の実行時にWebからAPIを介してファイル(画像jpg/png)をダウンロードし、ローカルに保存する必要があるアプリに取り組んでいます利用可能なアップデートがある場合は、APIを介して新しいデータをダウンロードします)。

これがデスクトップアプリの動作方法としては非常に一般的でないことは承知していますが、主な目的は、デスクトップアプリのデータをWebアプリと同期させることです。

これまでのところ、ユーザーがインターネットに接続されているかどうかを確認するnpmプラグインrequestlink )を見つけました。

Electronアプリ内でファイルをダウンロードして保存できるかどうかはわかりません(アプリの外からは見えません)?そのような目標を達成するために必要なプラグイン/ツールを推奨できますか?

どんな助けでもありがたいです。

10
lukaszkups

さて、あなたは this answer からのスニペットを使用して、それをノードの方法で行うことができます。

var http = require('http');
var fs   = require('fs');
var app  = require('remote').require('app')

var file = fs.createWriteStream(app.getDataPath() + "externalFiles/file.jpg");
var request = http.get("http://url-to-api/some-image.jpg", function(response) {
  response.pipe(file);
});

そして、あなたはApp Data Pathファイルを保存します。もちろん、URLからファイルの名前を解析する必要があります。これで準備が整いました。

Webコンテンツを使用することもできます

https://github.com/atom/electron/blob/master/docs/api/web-contents.md

その後、アプリはブラウザとして機能し、オフラインサポートをローカルストレージまたはその他の技術を使用して追加する必要があります。

UPDATE:

今日のように、これのようにこれを助けることができるいくつかのパッケージがあります https://github.com/sindresorhus/electron-dl

13
limoragni