我是靠谱客的博主 苹果大象,最近开发中收集的这篇文章主要介绍使用spark-md5获取文件的MD5值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

初始化资源

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值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部