spark-md5 genera hash basado en el contenido del archivo

Cuando cargamos un archivo, el contenido del archivo no cambiará de acuerdo con la modificación del nombre del archivo. Se pueden ver diferentes tipos de archivos con una herramienta hexadecimal (UltraEdit), y el contenido del archivo correspondiente también es fijo. La función de reanudación o transmisión instantánea de esos archivos es generar un hash único basado en el contenido del archivo. Antes de cargar, deje que el fondo juzgue si se ha transmitido o qué se ha transmitido, y luego reanude o transmita instantáneamente según al estado.

Lo que comparto hoy es el paquete spark-md5, que puede obtener un hash único basado en el contenido.

Instalar:

npm install --save-dev spark-md5

Hay dos tipos de hash, uno es hexadecimal hash hexadecimal, el otro es hash sin procesar (no sé a qué traducir):

import SparkMD5 from 'spark-md5'

var hexHash = SparkMD5.hash('Hi there'); // hex hash
var rawHash = SparkMD5.hash('Hi there', true); // OR raw hash (binary string)
console.log(hexHash); //d9385462d3deff78c352ebb3f941ce12
console.log(rawHash); //Ù8TbÓÞÿxÃRë³ùAÎ

Hay otro uso, pero los resultados obtenidos por hash sin procesar son diferentes:

var spark = new SparkMD5();
spark.append('Hi');
spark.append(' there');
var hexHash = spark.end(); // hex hash
var rawHash = spark.end(true); // OR raw hash (binary string)
console.log(hexHash);//d9385462d3deff78c352ebb3f941ce12
console.log(rawHash);//Ԍُ

Entonces debería ser mejor usar hash hexadecimal.Aquí probé el hash del archivo:

<input type="file" @change="getFile">

getFile(file){
  let fileReader = new FileReader();
  fileReader.onload = function (e) {
    let hexHash = SparkMD5.hash(e.target.result);
    console.log(hexHash);
  };
  fileReader.readAsDataURL(file.target.files[0]);
}

Aquí debe usar FileReader para convertir el contenido del archivo en texto o base64 o ArrayBuffer. El documento oficial proporciona texto y ArrayBuffer, y FileReader tiene estas API. FileReader puede convertir Blob en datos en otros formatos. Existen principalmente tres métodos readAsText (convertido en texto), readAsArrayBuffer convierte Blob en ArrayBuffer y readAsDataURL convierte Blob en Base64.

Después de la prueba, el hash de salida sigue siendo el mismo si se cambia el nombre del archivo. Si se modifica el contenido, el hash de salida también cambiará si se agrega un espacio.

Cuando queremos reanudar el punto de interrupción, cortamos el archivo con Blob.prototype.slice, y luego obtenemos el hash de cada archivo cortado, y agregamos el índice de matriz para formar un nombre de archivo uno por uno, seguido de la secuencia Pasar juntos al fondo.

Bienvenido a prestar atención al número de suscripción personal que codifica notas personales

Supongo que te gusta

Origin blog.csdn.net/wade3po/article/details/128016682
Recomendado
Clasificación