xframelib
Version:
积累的前端开发基础库,来源于项目和服务于项目。
118 lines (117 loc) • 2.78 kB
TypeScript
/**
* 下载文件信息模型
*/
export interface IFileMeta {
id?: string;
name: string;
length: number;
downloadID: string;
chunkSize?: number;
}
/**
* 文件下载事件
*/
export type FileDownloadEvent = 'init' | 'info' | 'error' | 'downloadProgress' | 'saveProgress' | 'success';
/**
* 大文件分片/断点续传下载
*/
export declare class BigFileDownload {
private fileID;
private downloadURL?;
ChunkUnitM: number;
private chunkByteSize;
private totalChunks;
private currentDB?;
private keys?;
private fileMetaData;
private finishNum;
private eventTarget;
private cancelSource;
private isStarting;
private fileName?;
private cacheSize;
private requestTimeout;
/**
*
* @param fileID
* @param downloadURL 下载链接(可空)
* @param chunkSizeM 分片大小,默认为3M
* @param cacheNum 缓存大小
* @param requestTimeoutMS 请求超时时间(毫秒)默认为60s
*/
constructor(fileID: string, downloadURL?: string | undefined, chunkSizeM?: number, cacheNum?: number, requestTimeoutMS?: number);
/**
* 订阅事件
*/
on(eventName: FileDownloadEvent, fn: (event: any) => void): void;
/**
* 发送消息
*/
private dispatch;
/**
* 抛出异常信息
* @param data 异常描述
*/
private dispatchError;
/**
* 推送文字进度
* @param data 文字消息
*/
private dispatchInfo;
/**
* Get请求获取文件元数据信息
* @param baseURL 根URL路径
* @param apiPath 方法路径
* @param queryParams 请求参数
* @returns IFileMeta
*/
queryDownloadFileMeta(baseURL: string, apiPath?: string, queryParams?: any): Promise<IFileMeta | null>;
/**
*获取本地的File元数据信息
*/
getIFileMeta(): Promise<IFileMeta | null>;
/**
* 初始化信息
*/
private initIndexDB;
/**
* 初始化要下载的文件元数据
* @param url 下载路径
* @returns
*/
init(fileMeta: IFileMeta): Promise<void>;
/**
* 获取分片大小
* @returns
*/
getTotalChunks(): number;
/**
* 暂停下载
*/
pause(): void;
/**
* 重新开始
*/
restart(): void;
/**
* 删除下载任务
*/
delete(): void;
sleep(ms: any): Promise<unknown>;
/**
* 开始分段下载
*/
download(downloadAPI?: string, baseURL?: string, _params?: any): Promise<void>;
/**
* 下载完成进度
*/
private downloadProgress;
/**
* 输出保存文件进度-分片统计
*/
private outputProgress;
/**
* 保存文件
*/
private savefile;
}