66 lines
1.6 KiB
TypeScript
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;
|
|
}
|