parallel-file-uploader
Version:
高性能并行文件上传工具,支持大文件分片上传、断点续传、Web Worker多线程处理
262 lines • 6.3 kB
TypeScript
import { ParallelFileUploaderOptions } from './type';
import { type PerformanceData } from './modules';
/**
* 🔧 格式化文件大小
*/
declare function formatFileSize(bytes: number): string;
/**
* 🔧 格式化上传速度
*/
declare function formatSpeed(bytesPerSecond: number): string;
/**
* 并行文件上传器类
*
* 主要特性:
* - 支持多文件并发上传
* - 大文件自动分片上传
* - 使用Web Worker实现多线程处理
* - 支持断点续传
* - 自动失败重试
* - 完整的事件回调系统
* - 速度限制
* - 性能监控
* - 队列持久化
* - 🔧 增强的错误处理和兼容性
*
* @example
* ```typescript
* const uploader = new ParallelFileUploader({
* maxConcurrentFiles: 3,
* chunkSize: 5 * 1024 * 1024, // 5MB
* enableSpeedLimit: true,
* maxUploadSpeed: 1024 * 1024, // 1MB/s
* enablePerformanceMonitor: true,
* enableQueuePersistence: true,
* allowedFileTypes: ['*'], // 🔧 支持通配符
* debugMode: true, // 🔧 启用调试模式
* onFileProgress: (fileInfo) => {
* console.log(`${fileInfo.fileName}: ${fileInfo.progress}%`)
* }
* })
*
* uploader.addFiles(fileList)
* ```
*/
export declare class ParallelFileUploader {
private fileManager;
private chunkManager;
private speedLimiter;
private performanceMonitor;
private queuePersistence;
private workerManager;
private maxConcurrentFiles;
private maxConcurrentChunks;
private maxRetries;
private uploadPartUrl;
private debugMode;
private onFileAdded?;
private onFileProgress?;
private onFileSuccess?;
private onFileError?;
private onFileComplete?;
private onAllComplete?;
private onFileRejected?;
private onPerformanceUpdate?;
private sendFileInfoToServer?;
private sendFilePartToServer?;
private sendFileCompleteToServer?;
private getFilePartsFromServer?;
private sendPauseToServer?;
private performanceTimer?;
/**
* 创建并行文件上传器实例
* @param options 配置选项
*/
constructor(options?: ParallelFileUploaderOptions);
/**
* 添加文件到上传队列
*/
addFiles(files: File[] | FileList): void;
/**
* 处理文件队列
*/
private processFileQueue;
/**
* 初始化文件上传
*/
private initFileUpload;
/**
* 开始上传文件
*/
private uploadFile;
/**
* 处理分片队列
*/
private processChunkQueue;
/**
* 使用Web Worker上传分片
*/
private uploadChunkWithWorker;
/**
* 直接在主线程上传分片
*/
private uploadChunkDirect;
/**
* 处理Worker消息
*/
private handleWorkerMessage;
/**
* 发送Worker处理过的数据
*/
private sendProcessedChunk;
/**
* 处理分片上传成功
*/
private handleChunkSuccess;
/**
* 处理分片上传错误
*/
private handleChunkError;
/**
* 更新文件上传进度
*/
private updateFileProgress;
/**
* 完成文件上传
*/
private completeFileUpload;
/**
* 🔧 增强的错误处理方法
*/
private handleFileError;
/**
* 清理文件资源
*/
private cleanupFile;
/**
* 保存队列状态
*/
private saveQueueState;
/**
* 加载持久化队列
*/
private loadPersistedQueue;
/**
* 启动性能监控
*/
private startPerformanceMonitoring;
/**
* 暂停指定文件的上传
*/
pauseFile(fileId: string): void;
/**
* 暂停所有文件的上传
*/
pauseAll(): void;
/**
* 恢复指定文件的上传
*/
resumeFile(fileId: string): void;
/**
* 恢复所有暂停的文件上传
*/
resumeAll(): void;
/**
* 取消指定文件的上传
*/
cancelFile(fileId: string): void;
/**
* 取消所有文件的上传
*/
cancelAll(): void;
/**
* 获取上传状态统计
*/
getStats(): {
queued: number;
active: number;
completed: number;
failed: number;
paused: number;
};
/**
* 获取性能数据
*/
getPerformanceData(): PerformanceData;
/**
* 设置速度限制
*/
setSpeedLimit(bytesPerSecond: number, enabled?: boolean): void;
/**
* 启用/禁用性能监控
*/
setPerformanceMonitoring(enabled: boolean): void;
/**
* 启用/禁用队列持久化
*/
setQueuePersistence(enabled: boolean): void;
/**
* 销毁上传器实例
*/
destroy(): void;
/**
* 计算文件MD5值(静态方法)
*/
static calculateFileMD5(file: File, chunkSize?: number, onProgress?: (progress: number) => void): Promise<string>;
/**
* 获取性能指标(兼容性方法)
* @deprecated 使用 getPerformanceData() 代替
*/
getPerformanceMetrics(): {
workerPoolSize: number;
activeConnections: number;
averageSpeed: number;
currentSpeed: number;
memoryUsage?: any;
};
/**
* 获取队列统计(兼容性方法)
* @deprecated 使用 getStats() 代替
*/
getQueueStats(): {
total: number;
active: number;
queued: number;
completed: number;
failed: number;
};
/**
* 🔧 配置验证和优化建议
*/
private validateAndOptimizeConfig;
/**
* 🔧 输出初始化信息
*/
private logInitializationInfo;
/**
* 🔧 获取详细的配置信息
*/
getConfiguration(): {
fileManager: any;
chunkManager: {
chunkSize: string;
};
features: {
speedLimit: boolean;
performanceMonitor: boolean;
queuePersistence: boolean;
workerSupport: boolean;
};
limits: {
maxConcurrentFiles: number;
maxConcurrentChunks: number;
maxRetries: number;
};
};
/**
* 🔧 启用/禁用调试模式
*/
setDebugMode(enabled: boolean): void;
}
export { formatFileSize, formatSpeed };
//# sourceMappingURL=index.d.ts.map