Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

334
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!