Quiero descargar un archivo de imagen con nodeJS, usando una API, pero el problema es que el enlace de la API no tiene el archivo .jpg al final, ¿cómo lo hago? a continuación es cómo estoy tratando

url = 'https://i.pravatar.cc/225'
const https = require('https')
const fs = require('fs');


result = https.get(url, (resp) => {

        console.log('Result of response: ', resp)
        fs.writeFileSync('apiResponse', resp)
        console.log('Reached end!')
    })

Cuando hago clic en la URL, muestra la imagen en el navegador, ¿cómo hago para que mi programa escriba el archivo en el disco duro?

0
Lint 31 oct. 2019 a las 14:26

4 respuestas

La mejor respuesta

Este código carga varias imágenes diferentes

const url = 'https://i.pravatar.cc/225'

const https = require('https')
const fs = require('fs');

for(let i=0; i<10; i++) 
  https.get(url, resp => resp.pipe(fs.createWriteStream(`./test_${i}.jpeg`)));
1
Yaroslav Gaponov 14 nov. 2019 a las 09:15

Por favor, use esto. Lo he intentado y funciona bien. También puede cambiar el nombre del archivo descargado.

const https = require("https");
const fs = require("fs");

const file = fs.createWriteStream("file.jpg");
const request = https.get("https://i.pravatar.cc/225", function(response) {
  response.pipe(file);
});
1
Pardeep 31 oct. 2019 a las 11:35

Solo canalice la respuesta al archivo

const url = 'https://i.pravatar.cc/225'

const https = require('https')
const fs = require('fs');

https.get(url, resp => resp.pipe(fs.createWriteStream('./test.jpeg')));
1
Yaroslav Gaponov 31 oct. 2019 a las 11:33

Prueba la biblioteca download-file

https://www.npmjs.com/package/download-file

Instalar: npm install download-file --save

var download = require('download-file')

var url = "http://i.imgur.com/G9bDaPH.jpg"

var options = {
    directory: "./images/cats/",
    filename: "cat.gif"
}

download(url, options, function(err){
    if (err) throw err
    console.log("meow")
}) 
0
ArUn 31 oct. 2019 a las 11:54