使用spark-md5这个包计算文件的 md5 值,但是在 Uniapp 安卓端没有 FileReader 这个方法。

可以利用 plus.io.FileReader 读取照片 base64 内容,然后再计算 md5

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 获取照片 md5
*/
function getMD5(path) {
return new Promise((resolve, reject) => {
plus.io.resolveLocalFileSystemURL(path, entry => {
var fileReader = new plus.io.FileReader();
fileReader.readAsDataURL(entry);
fileReader.onloadend = function (evt) {
// base64图片,比如:data:image/jpeg;base64,/9j/4AAQSkZ...
var base64 = evt.target.result;
//抽取DataURL中的数据部分,从Base64格式转换为二进制格式
var bin = atob(base64.split(",")[1]); //atob解码
// 利用 Spark MD5 计算MD5值
var sparkMD5 = new SparkMD5();
sparkMD5.appendBinary(bin); //载入数据
var MD5 = sparkMD5.end();
resolve(MD5);
};
fileReader.onerror = err => {
reject(err);
};
});
});
}

使用方法

1
2
3
4
5
6
const { tempFiles } = await uni.chooseImage({
sizeType: ["compressed"],
sourceType: ["camera"],
});
const md5 = await this.getMD5(tempFiles[0].path);
console.log("md5", md5);