Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

344
Vistas
JavaScript, ¿cómo puedo asegurarme de que el archivo descargado sea exitoso y no esté dañado?

Estoy jugando con Electron-Node.js e intento descargar un archivo de un servidor y guardarlo en el disco local.

El siguiente código funciona como se esperaba, aunque no estoy seguro de si este es el mejor método para hacerlo.

 <script> const { ipcRenderer } = require('electron'); var fs = require('fs'); // (2) convert the blob to file. async function saveBlobToFile(blob, filename) { let fileData = new Int8Array(await blob.arrayBuffer()); fs.writeFileSync(filename, fileData); console.log("Blob successfully saved to file."); //is the file healthy though? } // (1) (download the file) function download(downloadURL, downloadDirectory){ var filename = "test.zip"; //this could be exe, images, pdf if (!fs.existsSync(downloadDirectory)){ fs.mkdirSync(downloadDirectory, { recursive: true }); console.log("Download Directory doesn't exist, created."); } console.log("Downloading..."); fetch(downloadURL) .then(response => response.blob()) .then(blob => { console.log("Downloaded and is now saving..."); saveBlobToFile(blob, downloadDirectory+"\\"+filename); }).catch(console.error); } download("https://sample.com/test.zip", "SOME_DIRECTORY_HERE"); //let's try to download the file. </script>

Aquí viene el WhatIF ;

Lo pruebo con un tamaño de archivo de 50MB y funciona, el archivo es saludable. Pero, ¿qué sucede si el tamaño del archivo es superior a 200MB o, por ejemplo, un large file y el usuario solo tiene una conexión a Internet muy limitada? El archivo podría corromperse, ¿cómo evitar esto? ¿Cómo podemos comprobar o asegurarnos de que el archivo se haya descargado correctamente y no esté dañado?

Estoy pensando, tal vez pueda verificar la suma de verificación MD5 del archivo descargado y compararlo con el archivo del servidor. ¿Pero es esto suficiente?

Si la suma de verificación MD5 es diferente del servidor, vuelva a descargar el archivo y vuelva a verificarlo, pero nuevamente esto será una pérdida de datos para un usuario con una conexión a Internet muy limitada.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Como dijo Marc , no hay una razón común por la que su archivo se corrompa

Pero

Estoy pensando, tal vez pueda verificar la suma de verificación MD5 del archivo descargado y compararlo con el archivo del servidor. ¿Pero es esto suficiente?

es para mí la respuesta de escritura a su propia pregunta.

Después

Si la suma de verificación MD5 es diferente a la del servidor, vuelva a descargar el archivo y vuelva a verificarlo, pero nuevamente esto será una pérdida de datos para un usuario con una conexión a Internet muy limitada.

Bueno, puedes dividir tu archivo en partes.

Si tiene archivos grandes para transferir (> 1 Gb, por ejemplo), puede dividirlos en fragmentos de 100 Mb y transferirlos uno por uno, y verificar las sumas de verificación individualmente, luego concatenarlas y verificar la suma de verificación completa nuevamente.

p.ej:

  1. Solicite la descarga al servidor, el servidor responde dando la cantidad de archivos o el tamaño del archivo final
  2. En la primera solicitud de descarga de archivos, divida el archivo de 1 Gb en 10 archivos en una carpeta tmp en el servidor.
  3. Después de cada descarga, verifique la suma de verificación de esta parte única.
  • Si la suma de verificación es incorrecta, solo vuelva a descargar esta parte
  1. Después de descargar todas las partes, concatenarlas (probablemente con Buffer.from(fileParts) y validar la suma de verificación final

Es solo un pensamiento rápido sobre una posible solución a su problema.

Espero que te ayude.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda