|
electron-dl 同时下载多个文件,如何取得总体进度及每一个文件的进度
要获取总体进度和每个文件的进度,您可以使用 electron-dl 模块提供的 session 对象来监视下载进度。以下是修改后的示例代码,用于获取总体进度和每个文件的进度:
- const { app, BrowserWindow, ipcMain } = require('electron');
- const { download } = require('electron-dl');
- const path = require('path');
- async function createWindow() {
- const mainWindow = new BrowserWindow();
- mainWindow.loadURL('https://example.com');
- mainWindow.webContents.on('did-finish-load', async () => {
- const files = [
- { url: 'https://example.com/file1.ext', directory: 'path/to/save/file1' },
- { url: 'https://example.com/file2.ext', directory: 'path/to/save/file2' },
- // Add more files with their respective URLs and directories
- ];
- const totalFiles = files.length;
- let completedFiles = 0;
- let totalProgress = 0;
- for (const file of files) {
- const options = {
- directory: path.join(app.getPath('downloads'), file.directory),
- onProgress: (progress) => {
- const fileProgress = Math.round(progress * 100);
- totalProgress = Math.round((completedFiles + progress) / totalFiles * 100);
- console.log(`File progress: ${fileProgress}%`);
- console.log(`Total progress: ${totalProgress}%`);
- },
- };
- try {
- const dl = await download(mainWindow, file.url, options);
- console.log(`File saved to: ${dl.getSavePath()}`);
- completedFiles++;
- } catch (error) {
- console.error('File download failed:', error);
- }
- }
- mainWindow.close();
- });
- }
- app.on('ready', createWindow);
复制代码 在这个示例代码中,我们添加了 totalFiles 、 completedFiles 和 totalProgress 变量来跟踪总体进度和每个文件的进度。在每个文件的 onProgress 回调函数中,我们更新 completedFiles 和 totalProgress 变量,并打印出每个文件的进度和总体进度。
请注意,总体进度是根据已完成的文件数量和当前文件的进度计算得出的。每个文件的进度是根据当前文件的下载进度计算得出的。
|
|