1.5.2 • Published 2 years ago

@prequest/uploader v1.5.2

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

@prequest/uploader

针对多文件、大文件上传提供了一种便捷的方法,来控制同时进行的任务数量、和文件的切片上传。

安装

npm install @prequest/uploader

使用

下面演示了一个 60M 的文件,切片成了 6 份,进行 6 次 HTTP 请求,其中队列中同时上传的任务有 3 个。

import Uploader from '@prequest/uploader'
import { prequest } from '@prequest/xhr'

const Upload = () => {
  const [fileList, setFileList] = useState<File[]>([])
  const uploader = useRef<Uploader | null>(null)

  useEffect(() => {
    uploader.current = new Uploader({
      chipSize: 10 * 1024 * 1024, // 切片大小,10M
      poolLimit: 3, // 同时进行的任务数量
      customFormData(formData, { idx, file, chunk }) {
        // 要上传数据的 formData
        formData.append('name', file.name)
        formData.append('index', `${idx}`)
        formData.append('chunk', chunk)
        return formData
      },
      request(formData, { idx, file, chunk }) {
        // 上传过程
        return prequest.post('/upload', {
          data: formData,
          onUploadProgress(e) {
            console.log(`${file.name} 的第${idx}个分片,已上传:${e.loaded}`)
          },
        })
      },
    })
  }, [])

  async function onSubmit() {
    try {
      // 上传任务
      await uploader.current.upload(fileList)
    } catch (e) {
      console.log('上传文件失败')
    }
  }

  return (
    <div>
      <input type="file" onChange={e => setFileList(e.target.files)} />
      <button onClick={onSubmit}>上传</button>
    </div>
  )
}

参数

配置参数

名称类型默认必填含义
chipSizenumber10 * 1024 * 1024切片大小
poolLimitnumber3同时上传的任务数量
customFormData(formData: FormData, opt: CallbackOption) => FormData默认会将 name, index, chunk 三个字段添加到 formData 中定义要上传的 formData
request(formData: FormData, opt: CallbackOption) => Promise\<Response>定义要上传的请求方法

CallbackOption

名称类型含义
idxnumber切片的索引
chunkBlob切片文件
fileFile原始文件
1.5.2

2 years ago

1.5.1

2 years ago

1.5.0

2 years ago

1.3.7

2 years ago

1.3.6

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.3.10

2 years ago

1.3.9

2 years ago

1.3.8

2 years ago

1.3.5

2 years ago

1.3.3-alpha.0

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.2.6

2 years ago

1.2.4

3 years ago

1.2.0

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.2.1

3 years ago

1.1.2

3 years ago

1.1.0

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.1

3 years ago

1.0.1-alpha.0

3 years ago

1.0.0-alpha.0

3 years ago

0.4.7

3 years ago

0.4.5

3 years ago

0.4.4

3 years ago

0.4.6

3 years ago

0.4.3

3 years ago

0.4.2

3 years ago