large-file-upload-worker

1.0.0 • Public • Published

Large File Upload Worker

Large File Upload Worker 是一个用于处理大文件上传的 JavaScript 库。它使用 Web Workers 和 FileReader 进行文件的分片和并行上传,同时计算文件的 SHA-1 哈希值。计算哈希值使用了 Web Crypto API

特性

  • 使用 Web Workers 进行文件上传,不阻塞主线程。
  • 使用 FileReader 读取文件,防止一次性读取大文件导致内存溢出。
  • 计算文件的 SHA-1 哈希值,使用 Web Crypto API
  • 支持文件上传进度跟踪和错误处理。

安装

npm install large-file-upload-worker

使用

import FileUploader from 'large-file-upload-worker';

const fileUploader = new FileUploader({
  workerPoolSize: 5,
  fileReaderPoolSize: 5,
  chunkSize: 1024 * 1024,
  workerScript: './upload-worker.js',
  algorithm: 'SHA-1',
});

fileUploader.upload(file, uploadConfig);

API

new FileUploader(options)

创建一个新的文件上传器实例。

参数:

  • options: 配置对象。
    • workerPoolSize: Worker 池大小,默认为 5。
    • fileReaderPoolSize: FileReader 池大小,默认为 5。
    • chunkSize: 文件分片大小,默认为 1MB。
    • workerScript: Worker 脚本的路径,需要相对于使用者的环境,默认为 './upload-worker.js'。
    • algorithm: 用于计算文件哈希值的算法,默认为 'SHA-1',其他支持算法请查看 Web Crypto API

fileUploader.upload(file, uploadConfig)

上传一个文件。

参数:

  • file: 要上传的文件对象。
  • uploadConfig: 上传配置对象。
    • url: 上传的 URL。
    • headers: 上传请求的头部信息。
    • params: 上传请求的参数。
    • workerScript: Worker 脚本的路径,需要相对于使用者的环境,默认为 './upload-worker.js'。
    • algorithm: 用于计算文件哈希值的算法,默认为 'SHA-1'。 返回一个 Promise,解析为上传结果。

自定义事件

事件名称 返回值 功能
hashProgress { progress, processedSlices, totalSlices } 在文件哈希计算过程中触发,返回当前进度信息
hashCompleteEvent { hashHex } 当文件哈希计算完成时触发
uploadProgress { fileHash, index, success, total } 在文件上传过程中触发,返回当前上传的进度信息
uploadError { fileHash, index, total, error } 当文件上传出错时触发,返回错误信息
uploadComplete { fileHash, total } 当文件上传完成时触发

以上信息是根据具体代码实现进行调整的,如果有任何错误或遗漏,请随时告知。

开发和调试

运行以下命令启动开发服务器:

npm test

此命令将启动 browser-sync,你可以在浏览器中打开 localhost:3000 来查看和调试。

问题反馈

如果你在使用过程中遇到问题,欢迎通过 GitHub Issues 提交问题。

许可证

此项目使用 MIT 许可证,详见 LICENSE 文件。

贡献

欢迎任何形式的贡献,包括提出问题、添加新功能、改进文档等。

Package Sidebar

Install

npm i large-file-upload-worker

Weekly Downloads

0

Version

1.0.0

License

MIT

Unpacked Size

17.7 kB

Total Files

6

Last publish

Collaborators

  • valo0