Ribbit's works

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

#JavaScript
にメンテナンス済み
記事のトップ画像

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

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

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

実行環境

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

Node.js14.15.0
npm6.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,
  });
});