es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo descargar una imagen y luego servir rutas de API de Next.js.

¿Cómo puedo descargar una imagen y luego servirla en las rutas de Next.js api?

Este es mi ejemplo actual, ¿qué me falta?

import https from 'https'
import fs from 'fs'

export default async function handler(req, res) {
    const file = fs.createWriteStream('image.jpg')
    const request = https.get(imageUrl, function(response) {
      response.pipe(file).on('close', function () {
        console.log('¡Archivo escrito!')
      });
    });
    res.setHeader('Content-Type', 'image/jpg')
    res.send(file)
}

Actualmente estoy obteniendo este error: Error [ERR_STREAM_CANNOT_PIPE]: No se puede pipar, no es legible

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para servir la imagen descargada en las rutas de la API de Next.js, es necesario leer el archivo y luego enviar los datos del archivo en la respuesta. Puede modificar el código de la siguiente manera:

    import https from 'https'
    import fs from 'fs'
    
    export default async function handler(req, res) {
        const imageUrl = 'https://example.com/image.jpg'
        const file = fs.createWriteStream(`image.jpg`)
        https.get(imageUrl, function(response) {
          response.pipe(file).on('close', function () {
            console.log('¡Archivo escrito!')
            fs.readFile('image.jpg', function (err, data) {
                if (err) throw err
                res.setHeader('Content-Type', 'image/jpg')
                res.send(data)
            })
          });
        });
    }
    

    En el código modificado, el archivo de imagen descargado se lee utilizando el método fs.readFile, y los datos del archivo se envían en la respuesta utilizando el método res.send.

Comments are closed.