0.0.29 • Published 2 years ago

slice-upload-utils v0.0.29

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

slice-upload-utils

NPM version

介绍

  • 本工具包含上传和下载功能。vite + vue的实现。

上传

  • 包括切片上传,秒传,断点续传,暂停、取消。

    下载

  • 切片下载,合并,暂停、取消。

    上传hash计算

  • 为了优化计算hash时间,hash值计算分两种,一直是计算文件的真实MD5,一种是计算自定义hash值。

    自定义hash值:

    :: preHash,采用抽样hash算法,截取file前段、中间和末段合成一个新的文件,和file.size一起计算的一个新的hash值。

    :: chunkHash,采用preHash结合chunkSize和该切片的index计算hash值。

    真实hash值:

    :: preHash, file文件的hash值,file的真实MD5值计算,在file.size大于chunkSize时,通过计算chunkweb worker线程里面同时计算。

    :: chunkHash, file.size 小于chunkSize时,file等于chunkchunkHash等于preHashfile.size大于chunkSize时在web worker(vite 打包后,npm i 安装使用路径会出问题,故改成直接使用promise)里面计算。

  • 可以根据实例中的isPreHashisChunkHash的值来判断当前是否计算的真实hash。

快速开始

  • 使用 pnpm 安装

    pnpm add file-slice-upload

    示例代码

上传

/playground/vue/src/example/Upload.vue

下载

/playground/vue/src/example/Download.vue

下载文件后端代码

koa-download-demo

  • 具体效果可以把代码仓库clone下来,pnpm dev一下。

调用说明

上传

export interface UseSliceUploadOptions {
  /**
   * 上传文件
   */
  file: Ref<File | null | undefined>
  /**
   * 上传请求函数
   */
  request: UploadRequest
  /**
   * 报错处理函数
   */
  onError?: UploadEventType['error']
  /**
   * 上传完成函数
   */
  onFinish?: UploadEventType['finish']
  /**
   * 预检函数
   */
  preVerifyRequest?: PreVerifyUploadRequest
  /**
   * 分片大小
   * @default 1024 * 1024 * 2
   */
  chunkSize?: number
  /**
   * 并发上传数
   * @default 3
   */
  poolCount?: number
  /**
   * 请求失败后,重试次数
   * @default 3
   */
  retryCount?: number
  /**
   * 请求失败后,重试间隔时间
   * @default 300
   */
  retryDelay?: number
  /**
   * 请求超时时间(15s)
   * @default 15000
   */
  timeout?: number
  /**
   * 计算整个文件的hash,开启后比较耗时间
   * @default false
   */
  realPreHash?: boolean
  /**
   * 计算分片文件的hash,开启后比较耗时间
   * @default false
   */
  realChunkHash?: boolean
}

下载

export interface UseSliceDownloadOptions {
  fileSize?: number
  filename?: string
  /**
   * 文件MIME类型
   * @default application/octet-stream
   * @see https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
   */
  fileType?: string
  /**
   * 是否自动保存
   * @default true
   */
  autoSave?: boolean
  /**
   * 分片大小
   * @default 1024 * 1024 * 2
   */
  chunkSize?: number
  /**
   * 并发上传数
   * @default 3
   */
  poolCount?: number
  /**
     * 请求失败后,重试次数
     * @default 3
     */
  retryCount?: number
  /**
     * 请求失败后,重试间隔时间
     * @default 300
     */
  retryDelay?: number
  /**
     * 请求超时时间(15s)
     * @default 15000
     */
  timeout?: number
  /**
   * 上传请求函数
   */
  request: DownloadRequest
  /**
   * 报错处理函数
   */
  onError?: DownloadEventType['error']
  /**
   * 预检函数
   */
  onFinish?: DownloadEventType['finish']
}

License

MIT License © 2023 Ywenhao

0.0.20

2 years ago

0.0.21

2 years ago

0.0.22

2 years ago

0.0.23

2 years ago

0.0.24

2 years ago

0.0.25

2 years ago

0.0.15

2 years ago

0.0.16

2 years ago

0.0.17

2 years ago

0.0.18

2 years ago

0.0.19

2 years ago

0.0.10

2 years ago

0.0.11

2 years ago

0.0.12

2 years ago

0.0.13

2 years ago

0.0.14

2 years ago

0.0.26

2 years ago

0.0.27

2 years ago

0.0.28

2 years ago

0.0.29

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.7-beta.4

2 years ago

0.0.7-beta.3

2 years ago

0.0.7-beta.2

2 years ago

0.0.7-beta.1

2 years ago

0.0.7-beta.0

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4-beta.9

2 years ago

0.0.4-beta.8

2 years ago

0.0.4-beta.7

2 years ago

0.0.4-beta.6

2 years ago

0.0.4-beta.5

2 years ago

0.0.4-beta.4

2 years ago

0.0.4-beta.3

2 years ago

0.0.4-beta.2

2 years ago

0.0.4-beta.1

2 years ago

0.0.4-beta.0

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago

0.0.0

2 years ago