lendownload
v1.0.0
Published
A powerful download manager for Node.js with multi-threaded downloading, speed limiting, pause/resume and progress monitoring
Maintainers
Readme
LenDownload - 强大的 Node.js 下载管理器
LenDownload 是一个功能强大的 Node.js 下载管理器,支持多任务并发下载、分片下载、断点续传、速度限制和进度监控等功能。
功能特性
- 🚀 多任务并发下载 - 支持同时下载多个文件,可配置最大并发数
- 🔍 分片下载 - 大文件可分片下载,提高下载速度
- ⏸ 断点续传 - 支持从断点继续下载,节省时间和流量
- 🐢 速度限制 - 支持全局和单个任务的速度限制
- 📊 进度监控 - 实时显示下载进度、速度等信息
- 📝 日志记录 - 详细记录下载状态和事件
- 🔄 任务恢复 - 程序重启后可恢复未完成的下载任务
- 🎛 任务控制 - 支持暂停、恢复、停止单个或所有任务
安装
npm install lendownload
# 或
yarn add lendownload快速开始
基本使用
const { DownloadManager } = require('lendownload');
// 创建下载管理器实例
const downloadManager = new DownloadManager({
maxConcurrent: 3, // 最大并发下载数
globalSpeedLimit: 1024 * 1024, // 全局限速1MB/s
defaultDownloadPath: './downloads' // 默认下载目录
});
// 添加下载任务
const taskId = downloadManager.addTask({
url: 'https://example.com/largefile.zip',
outputPath: './downloads/file.zip', // 可选,不指定则使用默认目录
options: {
chunkSize: 2 * 1024 * 1024, // 分片大小(2MB)
speedLimit: 512 * 1024, // 单个任务限速512KB/s
onProgress: (progress) => {
console.log(`进度: ${progress.progress.toFixed(2)}%`);
},
onFinish: (result) => {
console.log(`下载完成: ${result.path}`);
},
onError: (error) => {
console.error('下载失败:', error.message);
}
}
});
// 暂停任务
// downloadManager.pauseTask(taskId);
// 恢复任务
// downloadManager.resumeTask(taskId);
// 停止任务
// downloadManager.stopTask(taskId);批量添加任务
// 批量添加下载任务
const urls = [
'https://example.com/file1.zip',
'https://example.com/file2.zip',
{
url: 'https://example.com/file3.zip',
outputPath: './special-downloads/file3.zip'
}
];
downloadManager.addTasks(urls);使用进度监控
const { DownloadManager, ProgressMonitor } = require('lendownload');
const downloadManager = new DownloadManager();
const monitor = new ProgressMonitor(downloadManager);
// 开始监控
monitor.start();
// 添加任务...
// 停止监控
// monitor.stop();API 文档
DownloadManager
下载管理器主类
构造函数
new DownloadManager(options)参数:
options(Object) - 配置选项maxConcurrent(number) - 最大并发下载数,默认3globalSpeedLimit(number) - 全局限速(字节/秒),默认0(不限速)defaultDownloadPath(string) - 默认下载目录,默认'./downloads'logDir(string) - 日志目录,默认'./download-logs'restoreTasks(boolean) - 是否恢复未完成任务,默认true
方法
addTask(task)- 添加单个下载任务addTasks(tasks)- 批量添加下载任务pauseTask(taskId)- 暂停指定任务resumeTask(taskId)- 恢复指定任务stopTask(taskId)- 停止指定任务pauseAll()- 暂停所有任务resumeAll()- 恢复所有任务stopAll()- 停止所有任务setGlobalSpeedLimit(speedLimit)- 设置全局限速(字节/秒)
DownloadTask
单个下载任务类
构造函数
new DownloadTask(url, outputPath, options)参数:
url(string) - 下载URLoutputPath(string) - 输出文件路径options(Object) - 配置选项chunkSize(number) - 分片大小(字节),默认1MBmaxRetries(number) - 最大重试次数,默认3timeout(number) - 请求超时时间(毫秒),默认30000speedLimit(number) - 速度限制(字节/秒),默认0(不限速)onProgress(Function) - 进度回调onFinish(Function) - 完成回调onError(Function) - 错误回调
方法
start()- 开始下载pause()- 暂停下载resume()- 恢复下载stop()- 停止下载
ProgressMonitor
进度监控类
构造函数
new ProgressMonitor(downloadManager)参数:
downloadManager(DownloadManager) - 下载管理器实例
方法
start()- 开始监控stop()- 停止监控addTask(taskId, task)- 添加任务到监控removeTask(taskId)- 从监控中移除任务
高级功能
任务恢复
当启用restoreTasks选项时,程序会在启动时自动恢复未完成的下载任务。任务状态会保存在logDir指定的目录中。
const downloadManager = new DownloadManager({
restoreTasks: true, // 启用任务恢复
logDir: './custom-logs' // 自定义日志目录
});清除日志
// 清除所有日志和状态
downloadManager.logger.clearAllLogs();自定义分片大小
downloadManager.addTask({
url: 'https://example.com/very-large-file.iso',
options: {
chunkSize: 5 * 1024 * 1024 // 5MB分片
}
});注意事项
- 分片下载需要服务器支持
Accept-Ranges头 - 临时文件会保存在下载目录的
.temp子目录中 - 日志文件可能会占用一定磁盘空间,定期清理或禁用日志可以减少占用
许可证
MIT © [weberzhang]
