Electron: 使用 node-downloader-helper 代理所有页面下载 (类似 Chrome)
使用 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')事件来处理下载完成事件。在这里,我们将所有下载保存到系统下载文件夹中。
原文地址: https://www.cveoy.top/t/topic/n9RC 著作权归作者所有。请勿转载和采集!