使用 node-downloader-helper 包,Electron 可以创建一个下载管理器,代理所有页面的下载请求,并像 Chrome 一样统一管理所有下载的文件。

首先,需要安装 node-downloader-helper 包:

npm install node-downloader-helper

然后,在 Electron 的主进程中,可以创建一个下载管理器,用于管理所有页面的下载请求。可以在应用程序启动时创建该管理器:

const { app, BrowserWindow } = require('electron');
const DownloadManager = require('node-downloader-helper').Downloader;

let mainWindow;

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

  mainWindow.loadFile('index.html');

  // 创建下载管理器
  const downloadManager = new DownloadManager();

  // 代理所有页面的下载请求
  mainWindow.webContents.session.on('will-download', (event, item, webContents) => {
    event.preventDefault();

    const downloadUrl = item.getURL();
    const fileName = item.getFilename();

    const downloadPath = app.getPath('downloads');

    downloadManager.download({
      url: downloadUrl,
      directory: downloadPath,
      filename: fileName
    })
    .on('progress', (stats) => {
      // 处理下载进度
      console.log(`Download progress: ${stats.progress}%`);
    })
    .on('end', () => {
      // 处理下载完成事件
      console.log('Download complete!');
    });
  });
}

app.whenReady().then(createWindow);

以上代码会创建一个主窗口,并在窗口加载时创建一个下载管理器。然后,会代理所有页面的下载请求,将它们交给下载管理器来处理。在下载管理器中,可以使用download()方法来启动下载,可以使用on('progress')事件来处理下载进度,可以使用on('end')事件来处理下载完成事件。在这里,我们将所有下载保存到系统下载文件夹中。

Electron: 使用 node-downloader-helper 代理所有页面下载 (类似 Chrome)

原文地址: https://www.cveoy.top/t/topic/n9RC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录