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

154
Vistas
Javascript: la imagen ya no se descarga

El siguiente código se utiliza para descargar una imagen mientras se le agrega un nombre personalizado. Me olvidé un poco de eso por un tiempo y quería volver a intentar la descarga y ya no funciona. ¿Me equivoqué en algo aquí?

 let imageInit = 'https://via.placeholder.com/350x150'; let image = imageInit.replace('350x250', '200x200'); if (!image) { return; } var download = function (uri, filename, callback) { request.head(uri, function (err, res, body) { console.log('content-type:', res.headers['content-type']); console.log('content-length:', res.headers['content-length']); request(uri).pipe(fs.createWriteStream(filename)).on('close', callback); }); }; const generatedName = uuidv4(); const finalName = generatedName.concat('.png'); download(image, finalName, function () { console.log('done'); });

Editar: Esto es raro. Al intentar con este enlace 'https://www.google.com/images/srpr/logo3w.png' se descarga, pero no funciona con ningún otro enlace.

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

0

Cuando completo los módulos apropiados que está utilizando, este código aquí funciona bien para mí en el nodo v16.13.2:

 const request = require('request'); const { v4: uuidv4 } = require('uuid'); const fs = require('fs'); let imageInit = 'https://via.placeholder.com/350x150'; let image = imageInit.replace('350x250', '200x200'); if (!image) { return; } var download = function(uri, filename, callback) { request.head(uri, function(err, res, body) { console.log('content-type:', res.headers['content-type']); console.log('content-length:', res.headers['content-length']); request(uri).pipe(fs.createWriteStream(filename)).on('close', callback); }); }; const generatedName = uuidv4(); const finalName = generatedName.concat('.png'); console.log(finalName); download(image, finalName, function() { console.log('done'); });

¿Hay algo diferente en todo tu código? ¿O este código específico no te funciona?

Cosas que puedes examinar en tu propio código:

  1. Agregue el manejo de errores tanto al flujo de request() como al flujo de escritura para registrar cualquier error.
  2. Intente cargar la URL https://via.placeholder.com/200x200 en su propio navegador para ver si funciona.
  3. Cuéntanos más sobre el significado real de "ya no funciona". ¿Qué observas? ¿Qué ves en los registros? ¿Dónde deja de ejecutarse?

Aquí hay una versión del código con mucho más manejo/registro de errores:

 const request = require('request'); const { v4: uuidv4 } = require('uuid'); const fs = require('fs'); let imageInit = 'https://via.placeholder.com/350x150'; let image = imageInit.replace('350x250', '200x200'); if (!image) { return; } var download = function(uri, filename, callback) { request.head(uri, function(err, res, body) { if (err) { console.log(err); callback(err); return; } console.log('content-type:', res.headers['content-type']); console.log('content-length:', res.headers['content-length']); let wStream = fs.createWriteStream(filename).on('error', err => { console.log(err); }); let rStream = request(uri).on('error', err => { console.log(err); }); rStream.pipe(wStream).on('close', () => callback(null)); }); }; const generatedName = uuidv4(); const finalName = generatedName.concat('.png'); console.log(finalName); download(image, finalName, function(err) { if (err) { console.log('finished with error'); } else { console.log('done'); } });

Tenga en cuenta que el módulo request() ha quedado obsoleto, por lo que realmente no debería usarse en el código nuevo en el futuro. Un buen conjunto de alternativas aquí .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Después de mucha investigación encontré la fuente del problema; Tuve process.exit(1); al final de mi código.

Esto se agregó para terminar con la ejecución de todo el código una vez que todo esté terminado, pero aparentemente con esto tampoco se descarga la imagen. Eliminarlo solucionó el problema además del fragmento proporcionado por @jfriend00.

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