美文网首页
封装spark-md5

封装spark-md5

作者: Neuro_annie | 来源:发表于2024-08-06 15:43 被阅读0次
安装spark-md5
npm install spark-md5

//引入spark-md5
import SparkMD5 from 'spark-md5'

//方法
calculate:计算文件的MD5值,或者计算大文件的文件分片的MD5值
append:追加数据
init:重置MD5值
end:使用字节数组作为结束符计算MD5值
import SparkMD5 from 'spark-md5'
const DEFAULT_SIZE = 10 * 1024 * 1024;
const blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;

const md5 = (file, chunkSize = DEFAULT_SIZE) => {
  return new Promise((resolve, reject) => {
    const startTmie = new Date().getTime();
    let chunks = Math.ceil(file.size / chunkSize);
    let currentChunk = 0;
    let spark = new SparkMD5.ArrayBuffer(); 
    let fileReader = new FileReader(); //读取文件
    fileReader.onload = function (e) {
      spark.append(e.target.result);  //追加数组缓冲区
      currentChunk++;
      if (currentChunk < chunks) {
        loadNext();
      } else {
        console.log('文件md5计算结束,总耗时:', (new Date().getTime() - startTmie) / 1000, 's')
        resolve(spark.end());  //完成md5的计算,返回十六进制结果。
      }
    };
    fileReader.onerror = function (e) {
      reject(e);
    };

    function loadNext() {
      console.log('当前part number:', currentChunk, '总块数:', chunks);
      let start = currentChunk * chunkSize;
      let end =  end > file.size ?  file.size : start + chunkSize;
      fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
    }
    loadNext();
  });
}

export default md5

相关文章

  • 大文件断点续传

    spark-MD5 增量计算切片 npm i spark-md5https://github.com/satazo...

  • 计算文件的md5值

    js-md5 spark-md5计算文件的分片md5 nodejs实现计算md5或者sha1值 使用crypto ...

  • 前端分片上传

    需求描述: 前端获取文件md5码且实现分片上传 步骤: 一:获取文件md5 1.插件spark-md5,还有另...

  • 获取文件的md5值

    此处我们需要用到一个spark-md5的js库类 把他安装到我们项目中: npm install spark-md...

  • spark-md5:spark.end(); The resul

    worng code: spark.end() executed twice true code: I found...

  • JavaScript面向对象与设计模式

    1. 面向对象 1.1 封装 封装的目的在于将信息隐藏。广义的封装不仅包括封装数据和封装实现,还包括封装类型和封装...

  • 02.OOP面向对象-3.一些理解

    对封装的理解?封装,类本身就是一个封装,封装了属性和方法。方法也是封装,对一些业务逻辑的封装。私有也是封装,将一些...

  • 封装微信小程序请求

    封装wx.request 封装api 封装请求调用

  • python 文件及文件夹的操作和异常捕获

    1、面向对象的特征:封装、继承、多态 1.1、封装: 函数一种封装,封装了一些逻辑代码 类也是一种封装,封装属性和...

  • node学习4

    Nodejs 路由模块封装、封装仿照 express 的路由 Nodejs 路由模块封装 封装仿照 express...

网友评论

      本文标题:封装spark-md5

      本文链接:https://www.haomeiwen.com/subject/iinfkjtx.html