загрузка изображения с использованием axios в nodejs

#node.js #base64

#node.js #axios #base64 #буфер

Вопрос:

 const {Buffer} = require("buffer")
const express = require("express");
const axios = require("axios");
const app = express();
let url =
  "https://res.cloudinary.com/practicaldev/image/fetch/s--nh8zSFgY--/c_fill,f_auto,fl_progressive,h_320,q_auto,w_320/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/285604/94170c66-2590-4002-90e0-ec4dc94ed7b5.png";

app.get("/", async(request, response) => {
  const arrayBuffer = await axios.get(url);
  let buffer = Buffer.from(arrayBuffer.data,'binary').toString("base64");
  let image = `data:${arrayBuffer.headers["content-type"]};base64,${buffer}`;
  response.send(`<img src=${image}/>`);
});

app.listen(5001, () => console.log("Server is up and running.."));
 

Изображение не отображается. На серверной консоли нет ошибки. Буфер является допустимой строкой base64.

Вывод

введите описание изображения здесь

Комментарии:

1. Идите сюда за ответом

Ответ №1:

Вам не хватает двух вещей:

1.) Добавьте responseType: 'arraybuffer' в параметры вашего запроса

2.) Добавьте недостающие кавычки вокруг вашей base64 строки в src атрибут в img -tag:

 app.get("/", async(request, response) => {
    const arrayBuffer = await axios.get(url, {
        responseType: 'arraybuffer'
    });
    let buffer = Buffer.from(arrayBuffer.data,'binary').toString("base64");
    let image = `data:${arrayBuffer.headers["content-type"]};base64,${buffer}`;
    response.send(`<img src="${image}"/>`);
});
 

Комментарии:

1. Идите сюда за ответом