浏览器端不用第三方包也可以获取md5值

利益于JS的同构特性,crypto虽然是Node.js的自带模块,但同时也能用于Web浏览器端。

# 双主角

# crypto

WARNING

这家伙是nodejs自带模块,测试了下在浏览器端也能正常使用

# FileReader

# 隐藏的孪生兄弟

# atob和btoa

# 关键代码





 













// 将reader方法封装成Promisify 
async readFileData(fileReader, file) {
  return new Promise((resolve, reject) => {
    fileReader.addEventListener('load', (ev) => {
      resolve(ev.target.result);
    });
    fileReader.readAsArrayBuffer(file);
  });
}

// 代码调用
const reader = new FileReader();
const crypto = require('crypto');
const md5 = crypto.createHash('md5');
let fileBuff = await that.readFileData(reader, file);
fileBuff = Buffer.from(fileBuff);
md5Str = md5.update(fileBuff).digest('hex');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17