线上预览地址:https://jianli.pnote.net/uploader
typedoc地址:https://jianli.pnote.net/uploader/docs
单个文件或多个文件的分片断点续传库,可自定义配置分片数量、大小、并发数、失败重试次数等功能。
支持多文件队列上传,如:添加、删除、暂停、开始、停止任意文件队列
支持监听整个文件的上传进度和多个分片的上传进度
支持多文件上传、队列上传、重置队列等回调函数
支持Observable式调用方式
Constructor
Uploader(arg)
适用于单文件分片断点续传
Arguments
url:string:上传接口地址file:File:上传的文件config:上传配置retryCount:number:上传失败后的重试次数;默认 3 (即上传失败后最多重试两次)concurrentLimit:number:分片上传的并发请求量,默认为 3chunkSize:number:分片的大小,默认 2 * 1024 * 1024,等于2MBforceDirect:boolean:上传强制采用直传方式,默认 falseputExtra:自定义参数配置fname:string:可以覆盖file[name]params:object:放置自定义参数
Properties
uuid:string:实例的唯一IDfile:File:当前文件status:STATUS:实例状态
Methods
start() :开始上传stop() :停止上传,再次执行 start() 会继续上传reset() :重置断点续传的记录,从分片 0 重新上传
Events
next :文件上传时触发。使用此事件来更新当前文件的上传进度。返回值:Progresscomplete :成功上传文件时触发。返回值:接口的响应数据error :发生错误时触发。返回值:包含错误消息,有时还包含文件和其他详细信息
uploaderMultiple(url,config)
适用于多文件分片断点续传
Arguments
url:string:上传接口地址config:上传配置retryCount:number:上传失败后的重试次数;默认 3 (即上传失败后最多重试两次)concurrentLimit:number:分片上传的并发请求量,默认为 3chunkSize:number:分片的大小,默认 2 * 1024 * 1024,等于2MBforceDirect:boolean:上传强制采用直传方式,默认 `false
Properties
Methods
addFile(file,putExtra) :将文件添加到队列中getFile(id) :通过 id 返回指定的文件对象。返回值 fileInforemoveFile(id) :通过 id 删除指定的文件。返回值 booleanstart() :开始队列中的文件stop() :停止队列,再次执行 start() 会继续按队列处理pause(id) :通过 id 暂停或继续指定的文件。返回值 boolean
Events
UploadProgress :文件上传时触发。使用此事件来更新当前文件的上传进度。返回值:Progress 和 FileInfoUploadComplete :队列中的所有文件处理完时触发。返回值:Array<FileInfo>FileUploaded:成功上传文件时触发。返回值:接口的响应数据和 FileInfoFileUploadError:发生错误时触发。返回值:包含错误消息,有时还包含文件和其他详细信息
interface
Progress
total:object:整个文件的上传进度loaded:number:已上传的字节total:number:总共的字节percent:number:百分比,loaded / total* 100chunks:Array<total>:分片的上传进度,以数组方式返回 total:object
fname:string:可以覆盖file[name]params:object:放置自定义参数
FileInfo:文件信息
id:string:唯一IDname:string::文件名type:string::文件类型loaded:number::已传字节total:number::总字节percent:number::百分比status:number::状态
目录结构
├── demo
│ ├── assets
│ │ ├── bg.svg
│ │ ├── file.svg
│ │ ├── p.css
│ │ ├── purpose.css
│ │ └── styles.scss
│ ├── multiple
│ │ ├── index.html
│ │ └── index.ts
│ ├── uploader
│ │ ├── index.html
│ │ └── uploader.ts
│ ├── config.js
│ ├── element.js
│ ├── index.html
│ └── index.js
├── lib
│ ├── config
│ │ └── defaults.d.ts
│ ├── enums
│ │ └── uploader.d.ts
│ ├── interface
│ │ ├── Chunks.d.ts
│ │ ├── Options.d.ts
│ │ ├── Params.d.ts
│ │ └── Progress.d.ts
│ ├── utils
│ │ ├── array.d.ts
│ │ ├── console.d.ts
│ │ ├── is.d.ts
│ │ ├── objects.d.ts
│ │ ├── observable.d.ts
│ │ ├── pool.d.ts
│ │ ├── request.d.ts
│ │ └── uploadUtils.d.ts
│ ├── index.d.ts
│ ├── index.js
│ ├── upload.d.ts
│ ├── uploader.d.ts
│ └── uploaderMultiple.d.ts
├── src
│ ├── config
│ │ └── defaults.ts
│ ├── enums
│ │ └── uploader.ts
│ ├── interface
│ │ ├── Chunks.ts
│ │ ├── Options.ts
│ │ ├── Params.ts
│ │ └── Progress.ts
│ ├── utils
│ │ ├── array.ts
│ │ ├── console.ts
│ │ ├── is.ts
│ │ ├── objects.ts
│ │ ├── observable.ts
│ │ ├── pool.ts
│ │ ├── request.ts
│ │ └── uploadUtils.ts
│ ├── index.ts
│ ├── typings.d.ts
│ ├── upload.ts
│ ├── uploader.ts
│ └── uploaderMultiple.ts
├── webpack
│ ├── build.config.js
│ ├── dev.config.js
│ └── example.config.js
├── .babelrc
├── .editorconfig
├── .gitignore
├── .prettierignore
├── README.md
├── package.json
└── tsconfig.json