¿Existe algún método para calcular el MD5 de un archivo de imagen en el lado del cliente en mi mapa angular, que coincidirá con el MD5 cuando almacene ese archivo en Firestore? Necesito poder confirmar que un archivo de usuario coincide con una versión de referencia almacenada en firebase sin tener que volver a cargarlo.
Puedo obtener un búfer de matriz de un objeto de archivo en la máquina local, pero no puedo hacer el cálculo md5 localmente para que coincida con lo que devuelve Firebase.
El resultado que obtuve no se parece en nada al md5 informado por Firebase, por lo que no creo que esté en el camino correcto:
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); Lo anterior produjo un resultado que parece 29e10414c7c7b7adb61330b02f8f3ddc , mientras que el MD5 informado por firebase es KeEEFMfHt622EzCwL4893A== así que creo que estoy en el árbol equivocado. Ni siquiera el hash de la misma longitud.. . .
Habría comentado pero la reputación no me lo permite.
KeEEFMfHt622EzCwL4893A== está codificado en base64. El tuyo está codificado en hex .
Acabo de usar un convertido en línea y comprueba que coinciden.