parallel-file-uploader
Version:
高性能并行文件上传工具,支持大文件分片上传、断点续传、Web Worker多线程处理
96 lines • 2.19 kB
TypeScript
import { FileInfo, UploadStepEnum } from '../type';
/**
* 持久化的文件信息(不包含File对象)
*/
interface PersistedFileInfo {
fileId: string;
fileName: string;
fileSize: number;
uploadedSize: number;
progress: number;
status: UploadStepEnum;
mimeType?: string;
lastUpdated?: number;
totalChunks?: number;
uploadInfo?: {
parts?: Array<{
etag: string;
partNumber: number;
partSize?: number;
}>;
md5?: string;
[key: string]: any;
};
}
/**
* 队列持久化管理器
* 将上传队列状态保存到localStorage,支持浏览器刷新后恢复
*/
export declare class QueuePersistence {
private enabled;
private storageKey;
private chunkStorageKey;
constructor(enabled?: boolean, storageKey?: string);
/**
* 启用/禁用持久化
*/
setEnabled(enabled: boolean): void;
/**
* 检查是否启用
*/
isEnabled(): boolean;
/**
* 检查localStorage是否可用
*/
private isStorageAvailable;
/**
* 保存文件队列状态
*/
saveQueue(files: FileInfo[]): void;
/**
* 保存分片状态
*/
saveChunkStatus(fileId: string, uploadedChunks: Set<number>, pendingChunks: Set<number>): void;
/**
* 加载文件队列状态
*/
loadQueue(): PersistedFileInfo[];
/**
* 加载分片状态
*/
loadChunkStatus(fileId: string): {
uploaded: number[];
pending: number[];
} | null;
/**
* 加载所有分片状态
*/
private loadAllChunkStatus;
/**
* 移除指定文件的记录
*/
removeFile(fileId: string): void;
/**
* 移除分片状态
*/
private removeChunkStatus;
/**
* 清除所有持久化数据
*/
clearAll(): void;
/**
* 清理过期数据
*/
cleanupExpiredData(): void;
/**
* 获取存储使用情况
*/
getStorageInfo(): {
queueSize: number;
chunkSize: number;
totalSize: number;
estimatedQuota: number;
};
}
export {};
//# sourceMappingURL=QueuePersistence.d.ts.map