WebExeBuilder Documentation

downloadBatch

Category: File Operations

Namespace: web.files.downloadBatch

Description

Download multiple files with progress tracking and parallel execution. This API provides efficient batch downloading with real-time progress callbacks, configurable parallelism, and flexible error handling strategies.

Syntax

const results = await web.files.downloadBatch({
    downloads: [
        { url: string, filePath: string },
        { url: string, filePath: string },
        ...
    ],
    overwrite: boolean,
    parallel: number,
    timeout: number,
    stopOnError: boolean,
    onProgress: function
});

Parameters

  • downloads (required) - Array of objects with url and filePath properties
  • overwrite (optional) - Overwrite existing files without prompt (default: false)
  • parallel (optional) - Number of simultaneous downloads (default: 3, recommended: 3-5)
  • timeout (optional) - Timeout per file in milliseconds (default: 30000)
  • stopOnError (optional) - Stop batch on first error (default: false)
  • onProgress (optional) - Callback function (completed, total, current) => {}

Returns

Promise<Array> - Array of result objects:

{
    success: boolean,
    filePath: string,
    size?: number,
    contentType?: string,
    error?: string
}

Example

// Download CDN dependencies
const dependencies = [
    { url: 'https://cdn.com/bulma.min.css', filePath: 'C:\\MyApp\\styles\\bulma.min.css' },
    { url: 'https://cdn.com/font-awesome.min.css', filePath: 'C:\\MyApp\\styles\\font-awesome.min.css' },
    { url: 'https://cdn.com/fa-solid-900.woff2', filePath: 'C:\\MyApp\\webfonts\\fa-solid-900.woff2' }
];

const results = await web.files.downloadBatch({
    downloads: dependencies,
    overwrite: true,
    parallel: 3,
    onProgress: (completed, total, current) => {
        const percent = Math.round((completed / total) * 100);
        console.log(`${percent}% - ${current.filename} ${current.success ? '✓' : '✗'}`);
    }
});

const successful = results.filter(r => r.success).length;
console.log(`Downloaded ${successful}/${results.length} files`);

Use Cases

  • Download multiple CDN dependencies for offline use
  • Batch download assets for application deployment
  • Sync remote files with progress tracking
  • Download font families with multiple weight/style files
  • Fetch multiple API resources efficiently

Performance Benefits

  • 3-5x faster than sequential downloads with parallel execution
  • Real-time progress tracking for better UX
  • Memory efficient with streaming downloads
  • Flexible error handling - continue or stop on failure