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
urlandfilePathproperties - 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