UNPKG

vuepress-theme-justskiv

Version:
43 lines (34 loc) 950 B
--- date: 2020-11-26 category: frontend title: 浏览器端不用第三方包也可以获取md5值 --- > 利益于JS的同构特性,crypto虽然是Node.js的自带模块,但同时也能用于Web浏览器端。 <!-- more --> ## 双主角 ### crypto ::: warning 这家伙是nodejs自带模块,测试了下在浏览器端也能正常使用 ::: ### FileReader ## 隐藏的孪生兄弟 ### atob和btoa ## 关键代码 ``` js {5} // 将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'); ```