Tengo una carpeta en mi servidor de nodos llamada /pictures/renamed . En él, estoy tratando de guardar una imagen y la guarda con éxito, sin embargo, no muestra nada excepto un mensaje que dice "Parece que no admitimos este formato de archivo". Cambié la extensión de la imagen a jpeg, jpg y png pero la imagen aún no se muestra. ¿Por qué está pasando esto?
const express = require('express'); const bodyParser = require('body-parser') const app = express(); const https = require('https'); const fs = require('fs'); const cors = require('cors'); const pathh = require('path') //Setting up the cors config app.use(cors()); //BodyParser middleware app.use(express.json()); function download(){ const url = 'https://unsplash.com/photos/3aqiY4t1qxM/download?ixid=MnwxMjA3fDB8MXxhbGx8Mnx8fHx8fDJ8fDE2NTY3Njg2Mzc&force=true' const path = pathh.resolve("./pictures/renamed/", 'imageWorld.jpg') const fileStream = fs.createWriteStream(path) https.get(url,(res)=>{ res.pipe(fileStream) fileStream.on('finish',()=>{ fileStream.close() }) }) } download(); //Serve static files if in production if(process.env.NODE_ENV === 'production'){ //Set static folder app.use(express.static('client/build')); app.get('*', (req, res) =>{ res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html')) }); } const port = process.env.PORT || 5000; app.listen(port, () => console.log(`Server started on port ${port}`));Esto se debe a que la respuesta es un documento html (que le indica que se le redirige) en lugar de datos jpg reales.
Se ve algo como esto en un editor de texto:
<html><body>You are being <a href="https://images.unsplash.com/photo-1656712193135-ef15d7ea27d6?ixlib=rb-1.2.1&dl=georgie-cobbs-3aqiY4t1qxM-unsplash.jpg&q=80&fm=jpg&crop=entropy&cs=tinysrgb">redirected</a>.</body></html>
Entonces, lo que guardó no era un archivo de foto válido.
Haciendo referencia a https://github.com/follow-redirects/follow-redirects , ejecuté npm install follow-redirects luego reemplacé const https = require('https') con const { https } = require('follow-redirects') en el archivo js, y luego pude obtener el jpg.