Skip to content

API

方法名说明类型
uploadFile上传文件(file: File, option?: Partial<Option>, callback?: CallbackOption)=> Promise<FileState>
downloadFile下载文件(file: { key: string, name: string }, option?: Partial<Option>)=>void

类型说明

typescript

export type CallbackOption = {
  beforeInitFile?: (    //文件获取,解析完成后,调用init接口前调用
    file: Partial<FileType> //解析后的文件信息
    ) => void
  afterInitFile?: (     //init接口返回信息后调用
    file: Partial<FileType>,  //文件信息
    fileState: Partial<FileState> //init接口返回的文件信息
    ) => void
  beforeUploadPartList?: (    //上传分片前调用
    file: Partial<FileType>,  //文件信息
    fileState: Partial<FileState>,  //init接口返回的文件信息
    index: number,    //分片序号
    chunkFile: Blob   //分片的数据
    ) => void
  afterUploadPartList?: (     //上传分片后调用
    file: Partial<FileType>,  //文件信息
    fileState: Partial<FileState>,  //init接口返回的文件信息
    index: number,    //分片序号
    chunkFile: Blob   //分片的数据
    ) => void
  beforeCompleteFile?: (     //合并分片前调用
    file: Partial<FileType>, //文件信息
    fileState: Partial<FileState>,  //init接口返回的文件信息
    partMd5List: string[]    //所有分片的MD5值合集
    ) => void
  afterCompleteFile?: (       //合并分片后调用
    file: Partial<FileType>,  //文件信息
    fileState: Partial<FileState>,  //init接口返回的文件信息
    partMd5List: string[]   //所有分片的MD5值合集
    ) => void
  fileUploadFinish?: (      //文件上传完成后调用
    file: Partial<FileType>,  //文件信息
    fileState: Partial<FileState> //init接口返回的文件信息
    ) => void
}

export type Option = {
  authorization: string   //权限信息,用于确定文件的上传和访问者,默认''
  isPrivate: boolean      //是否私有 false:否 true:是,默认false
  concurrentLimit: number //分片网络请求并发数,默认5
  downloadURL: string     //下载文件接口地址,默认'/api/storage/download/'
  initURL: string         //上传任务初始化接口地址,默认'/api/storage/upload/init'
  shardURL: string        //文件预分片接口地址,默认'/api/storage/upload/sharding'
  completeURL: string     //合并分片接口地址,默认'/api/storage/upload/complete/'
}

export type FilePart = {
  startPosition: number   //分片开始位置
  endPosition: number     //分片结束位置
  uploadId: string        //上传ID
  url: string             //上传URL
}

export type FileState = {
  id?: string             //文件ID
  fileKey?: string        //文件Key
  fileMimeType?: string   //文件MIME类型
  fileSuffix?: string     //文件后缀
  partList: FilePart[]    //文件分片信息
  partSize?: number       //分片大小
  partCount?: number      //分片数量
  isDone?: boolean        //是否秒传
  fileName?: string       //文件名称
}

export type FileType = {
  file: File              //文件数据
  fileMd5: string         //文件MD5值
  fileSize: number        //文件大小
  fileName: string        //文件名称
}