file文件生成hash值
文件生成二进制hash是为了确保唯一性,及时文件再上传,hash也不会变
第一种方案:
使用sha1-file-web(更轻量)
npm install sha1-file-web // 命令安装
// 接入
import sha1 from 'sha1-file-web'
sha1(file).then(fileSha => {console.log('这个就是hash这种加载更快',fileSha)
})
第二种方案:
使用crypto-js(更全面、更安全)
npm install crypto-js // 命令安装
// 接入
import CryptoJS from 'crypto-js'
export function calculateMd5(file) {return new Promise((resolve, reject) => {const reader = new FileReader()reader.onload = (event) => {try {// 将文件内容转换为WordArray格式const wordArray = CryptoJS.lib.WordArray.create(event.target.result)// 计算MD5并转为16进制字符串const md5Hash = CryptoJS.MD5(wordArray).toString(CryptoJS.enc.Hex)resolve(md5Hash)} catch (err) {reject(err)}}reader.onerror = () => reject('文件读取失败')reader.readAsArrayBuffer(file) // 以二进制流读取文件})
}
calculateMd5(file).then(hash=>{console.log('我也是hash我加载可能有点慢', hash)
})
具体两种方案的区别,我问了AI:
感兴趣的可以点击看下