1、安装spark-md5包
npm install spark-md5
2、新建文件md5WithChunk.js,封装md5加密文件的方法
/**
* 分片获取md5值
* @param {*} file 文件对象
* @param {*} processCallback 进度修改回调
* @param {Number} chunkSize 分片大小, 默认2M
* @returns {string} md5
*/
export const md5WithChunk = (file, processCallback = console.log, chunkSize = 2 * 1024 ** 2) => {
return new Promise((resolve, reject) => {
const blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice
let chunks = Math.ceil(file.size / chunkSize)
let currentChunk = 0
let spark = new SparkMD5.ArrayBuffer()
let fileReader = new FileReader()
fileReader.onerror = reject
fileReader.onload = (e) => {
processCallback(parseInt(currentChunk / chunks * 100))
spark.append(e.target.result)
currentChunk++
if (currentChunk < chunks) {
loadNext()
} else {
processCallback(parseInt(currentChunk / chunks * 100))
resolve(spark.end())
}
}
function loadNext() {
let start = currentChunk * chunkSize
let end = start + chunkSize >= file.size ? file.size : start + chunkSize
fileReader.readAsArrayBuffer(blobSlice.call(file, start, end))
}
loadNext()
})
}
3、调用计算文件md5的方法,得到md5处理后的文件
const getMd5File = ({file}) => {
const fileMd5 = await md5WithChunk(file, (process) => {
upFile.md5Process = process
})
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...