UNPKG

parallel-file-uploader

Version:

高性能并行文件上传工具,支持大文件分片上传、断点续传、Web Worker多线程处理

262 lines 6.3 kB
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