如何使用 Node 和 Express 正确提供动态图像?
Posted
技术标签:
【中文标题】如何使用 Node 和 Express 正确提供动态图像?【英文标题】:How to properly serve a dinamic image with Node and Express? 【发布时间】:2019-07-19 03:17:28 【问题描述】:我有很多问题要实现我正在尝试的目标:
我想从该 URL http://tapas.clarin.com/tapa/1990/02/22/19900222_thumb.jpg
请求图像并将其显示在视图中,但我却将其显示在视图中:
实现我想要的正确方法是什么?
这是我的代码:
const app = require('express')();
var http = require('http').Server(app);
var rp = require('request-promise');
const fs = require('fs')
var url = 'http://tapas.clarin.com/tapa/1990/02/22/19900222_thumb.jpg'
app.get('/', (req, res) =>
rp(url)
.then(image => res.set('Content-Type', 'image/jpeg').send(image))
.catch(err => res.send(err));
)
http.listen(3000, () =>
console.log('listening on localhost:3000');
);
【问题讨论】:
您需要设置内容类型。res.set('Content-Type', 'image/jpeg').send(image)
好的,现在它显示为黑屏,而不是我想要提供的图像:(
此链接可能对“***.com/questions/15772394/…”有所帮助
***.com/questions/36337841/… ***.com/questions/39301227/…
如果你能找到一些东西,请尝试上面的链接。
【参考方案1】:
您从 request-promise 返回一个字符串,而不是缓冲区。设置编码:null,将为您提供一个可以发回的缓冲区。
const app = require('express')();
var http = require('http').Server(app);
var rp = require('request-promise');
var options =
url: 'http://tapas.clarin.com/tapa/1990/02/22/19900222_thumb.jpg',
encoding: null
app.get('/', (req, res) =>
rp(options)
.then(image =>
return res.end(image,'binary');
)
.catch(err => res.send(err));
)
http.listen(3000, () =>
console.log('listening on localhost:3000');
);
【讨论】:
以上是关于如何使用 Node 和 Express 正确提供动态图像?的主要内容,如果未能解决你的问题,请参考以下文章
如何正确设置 Node、Express 和 Angular2
请求新页面时如何将 AngularJS 路由与 Express (Node.js) 一起使用?