在我的Angular Map中,是否有一种方法可以计算客户端图像文件的MD5,当我将该文件存储在Firestore上时,该方法将与MD5相匹配?我需要能够确认用户文件与firebase中存储的参考版本匹配,而无需再次上传。
我可以从本地机器上的文件对象中获取数组缓冲区,但无法在本地完成md5计算以匹配Firebase返回的内容。
我得到的结果看起来一点也不像Firebase报告的md5,所以我认为我根本没有走上正轨:
let file = target.files[0];
let reader = new FileReader();
reader.onload = function (event) {
data = event.target.result;
let ret: any = data;
if (data) {
let len = ret.byteLength;
let uintArBuff = new Uint8Array(ret); //Does an array buffer convert to a Uint8Array?
let md5 = new Md5();
let hash = md5.appendByteArray(uintArBuff).end();
console.log(hash);
}
}
reader.readAsArrayBuffer(file);
上面的结果看起来像29e10414c7c7b7adb61330b02f8f3ddc
,而firebase报告的MD5是KeEEFMfHt622EzCwL4893A==
,所以我认为我完全错了。甚至不是相同长度的散列。
我本想发表评论,但声誉不允许我这样做。
CCD_ 3是base64编码的。你的是hex
编码的。
我刚刚使用了一个在线转换,它检查出它们是否匹配。