概述
初始化资源
npm install --save spark-md5
let SparkMD5 = require('spark-md5')
1.一般文件
一种是用SparkMD5.hashBinary() 直接将整个文件的二进制码传入,直接返回文件的md5。
2.体积较大的文件
这里采用分片上传的方式:
一般我们做上传的时候推荐使用着一种方式,因为文件的体积不确定,这种方式对于大体积的文件计算更加稳定,还可以获得计算进度的信息。
function md5(file, chunkSize) {
let _this = this
return new Promise((resolve, reject) => {
let 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.onload = function (e) {
spark.append(e.target.result);
currentChunk++;
_this.md5Obj.percent = Math.floor((currentChunk / chunks) * 100);
_this.container.file.MD5Progress = _this.md5Obj.percent
if (_this.onMD5Progress(_this.container.file) === false) return;
if (currentChunk < chunks) {
loadNext();
} else {
_this.md5Obj.md5 = spark.end(); //完成md5的计算,返回十六进制结果。
resolve(_this.md5Obj);
}
};
fileReader.onerror = function (e) {
reject(e);
};
function loadNext() {
let start = currentChunk * chunkSize;
let end = start + chunkSize;
(end > file.size) && (end = file.size);
fileReader.readAsArrayBuffer(blobSlice.call(file, start, end));
}
loadNext();
});
}
调用:
md5.call(this, file, this.chunkSize)
.then(res => {
// 获取到文件的md5
setDatas.call(this, 'params.md5', res.md5);
if (this.autoUpload) {
if (this.onStartUpload(this.container.file) === false) return;
handleUpload.call(this);
}
})
.catch(res => {
// 处理异常
console.error(res);
});//
最后
以上就是苹果大象为你收集整理的使用spark-md5获取文件的MD5值的全部内容,希望文章能够帮你解决使用spark-md5获取文件的MD5值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复