【Electron】URLからファイルをダウンロードする

記事のトップ画像

electronには、URLからファイルをダウンロードするモジュールを持っていません。

httpsやrequestのような別のモジュールを活用することで、ファイルのダウンロード自体は実現することができますが、ダウンロードの進捗を出したり、同時に複数のダウンロードを管理するとコードが複雑になってしまいます。

そういった問題を、electron-dlが解決してくれるようです。

実行環境

使用した環境は以下の通り。

Node.js 14.15.0
npm 6.14.9

electron-dlの読み込み

npm i -D electron-dl

使い方

使用する際は次のように指定します。

const { download } = require("electron-dl");

await download(
  window, // electronのwindow
  url, // ダウンロード対象のURL
  {
    directory: "保存先のパス",
    filename: "保存するファイル名",
  }
);

使用例

画面からの"download"をトリガーにして、ファイルをダウンロードするサンプルです。

const { app, BrowserWindow, ipcMain } = require("electron");
const { download } = require("electron-dl");

let mainWindow;

function createWindow() {
  mainWindow = new BrowserWindow({
    webPreferences: {
      nodeIntegration: true,
    },
    width: 800,
    height: 600,
  });

  mainWindow.loadFile("index.html");
}

app.on("ready", createWindow);

ipcMain.on("download", async (event, props) => {
  await download(mainWindow, props.url, {
    directory: props.directory,
    filename: props.name,
  });
});