Skip to content

tunuo08/large-file-upload-worker

Repository files navigation

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 文件。

贡献

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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published