2025-04-02 21:57:33 +08:00

66 lines
1.6 KiB
TypeScript

import { UploadChunkData } from '../api';
import * as utils from '../utils';
import Base, { Extra } from './base';
export interface UploadedChunkStorage extends UploadChunkData {
size: number;
}
export interface ChunkLoaded {
mkFileProgress: 0 | 1;
chunks: number[];
}
export interface ChunkInfo {
chunk: Blob;
index: number;
}
export interface LocalInfo {
data: UploadedChunkStorage[];
id: string;
}
export interface ChunkPart {
etag: string;
partNumber: number;
}
export interface UploadChunkBody extends Extra {
parts: ChunkPart[];
}
export default class Resume extends Base {
/**
* @description 文件的分片 chunks
*/
private chunks;
/**
* @description 使用缓存的 chunks
*/
private usedCacheList;
/**
* @description 来自缓存的上传信息
*/
private cachedUploadedList;
/**
* @description 当前上传过程中已完成的上传信息
*/
private uploadedList;
/**
* @description 当前上传片进度信息
*/
private loaded;
/**
* @description 当前上传任务的 id
*/
private uploadId;
/**
* @returns {Promise<ResponseSuccess<any>>}
* @description 实现了 Base 的 run 接口,处理具体的分片上传事务,并抛出过程中的异常。
*/
protected run(): Promise<utils.ResponseSuccess<any>>;
private uploadChunk;
private mkFileReq;
private initBeforeUploadChunks;
private getUploadInfo;
private getLocalKey;
private updateLocalCache;
private updateChunkProgress;
private updateMkFileProgress;
private notifyResumeProgress;
}