NodeJS 如何使用express从url发送图像数据?

vwoqyblh  于 2023-03-17  发布在  Node.js
关注(0)|答案(4)|浏览(175)

我希望应用的/image返回随机图像,该如何操作?

应用程序js:

const app = express();

app.get('/image', async (req, res) => {
  const url = 'https://example.com/images/test.jpg';
  res.send(/**/);  // How do I send the image binary data from the url?
});

索引. html

在HTML中,此图像实际上显示了图像https://example.com/images/test.jpg的内容

<img src="https://my-app.com/image" />
jchrr9hc

jchrr9hc1#

我们遇到了同样的问题,这是我使用request包的解决方案,所以您必须先使用yarn add requestnpm i request。您的代码应该如下所示

const request = require('request');
const express = require('express');
const app = express();

app.get('/image', async (req, res) => {
  const url = 'https://example.com/images/test.jpg';

  request({
    url: url,
    encoding: null
  }, 
  (err, resp, buffer) => {
    if (!err && resp.statusCode === 200){
      res.set("Content-Type", "image/jpeg");
      res.send(resp.body);
    }
  });
});
c3frrgcw

c3frrgcw2#

Express API中存在res.sendFile

app.get('/image', function (req, res) {
   res.sendFile(filepath);
});
lg40wkob

lg40wkob3#

const express = require("express");
const https = require("node:https");
const app = express();
const port = 3000

app.get("/", function(req, res){
  const url = "https://api.openweathermap.org/data/2.5/weather?q=Paris&units=metric&appid=65441206f989bc53319e2689fccdc638";

  https.get(url, function(response){

    response.on("data", function(data){
      const weatherData = JSON.parse(data)
      const icon = weatherData.weather[0].icon
      const imageUrl = "http://openweathermap.org/img/wn/" + icon + "@2x.png"

      res.write("<img src=" + imageUrl + " ></img>")
      res.send();
    })
  });
})
q7solyqu

q7solyqu4#

你可以把所有这样的图片链接保存在json或者你选择的任何一个数据文件中,然后从它们中随机获取,转发并通过变量传递它们作为响应。res.send(imgURL: 'https://example.com/images/test.jpg');或者你可以在init中传递url变量。

相关问题