naive-upload
Version:
<p align="left"> <a href="https://www.npmjs.org/package/naive-upload"> <img src="https://img.shields.io/npm/v/naive-upload.svg"> </a> <a href="https://bundlephobia.com/package/naive-upload@latest"> <img src="https://img.shields.io/bundl
152 lines (151 loc) • 3.48 kB
TypeScript
import RawFile from "../Model/RawFile";
import { IApiService } from "../Core/IApiService";
import { IProgress } from "../Model/IProgress";
/**
* 文件上传帮助类
*
* @author LCTR
* @date 2022-09-22
*/
export default class UploadHelper {
constructor(enableWorker: boolean, apiService: IApiService, debug: boolean);
/**
* 是否启用Worker
* 默认启用(如果浏览器支持的话)
*/
private readonly enableWorker;
/**
* 浏览器是否支持Web Worker
*/
private readonly workerSupported;
/**
* 调试模式
*/
private readonly debug;
/**
* 接口服务
*/
private apiService;
/**
* 取消令牌
*/
private cancelTokenList;
/**
* 子线程上传单元
*/
private workerUnits;
/**
* 分片文件处理队列
* */
private chunkHandlerQueue;
/**
* 分片文件处理方法
*/
private chunkHandler;
/**
* 推迟次数
* <p>如果所有分片文件都需要推迟,则忽略推迟操作,直接首个分片文件</p>
* <p>同时推迟次数清零</p>
*/
private delayTimes;
/**
* 已完成
*/
private finished;
/**
* 已取消
*/
private canceled;
/**
* 已暂停
*/
private paused;
/**
* 等待继续的回调
*/
private waitToContinue;
/**
* 文件数据读取器
*/
private fileReaders;
/**
* 直接上传文件
*
* @param file
* @param onProgress
* @return 用户文件信息
*/
private uploadFile;
/**
* 直接上传分片文件
*
* @param handlerIndex
* @param validation
* @param chunk
* @param onProgress
*/
private uploadChunkFile;
/**
* 使用WebWorker上传文件
*
* @param file
* @param onProgress
*/
private useWorkerUploadFile;
/**
* 使用WebWorker分片文件
*
* @param handlerIndex
* @param validation 预先上传的验证结果
* @param chunk
* @param onProgress
*/
private useWorkerUploadChunkFile;
/**
* 发送数据给WebWorker
*
* @param handlerIndex
* @param data
* @param onProgress
* @param chunkFile 是否为分片文件
*/
private workerPostMessage;
/**
* 关闭
*
* @param handlerIndex 索引
*/
private closeByIndex;
/**
* 获取实例
*
* @param concurrent 并发数量
* @param enableWorker 是否启用Worker
* @param apiService 接口服务
* @param debug 调试模式
*/
static getInstance(concurrent: number, enableWorker: boolean | undefined, apiService: IApiService, debug?: boolean): Promise<UploadHelper>;
/**
* 处理文件
*
* @param file 文件
* @param onProgress 监听进度
*/
handler(this: UploadHelper, file: RawFile, onProgress: (progress: IProgress) => void): Promise<void>;
/**
* 取消
*/
cancel(this: UploadHelper): Promise<void>;
/**
* 暂停
*/
pause(this: UploadHelper): Promise<void>;
/**
* 恢复
*/
continue(this: UploadHelper): Promise<void>;
/**
* 关闭
*/
close(this: UploadHelper): Promise<void>;
}