如何在Express中将JSON与图像文件一起发送?
我了解您使用 res.sendFile
const path = require('path');
app.get('/image/:filename', (req, res, next) => {
res.type('png');
res.sendFile(
path.resolve(`${path.join(__dirname, './data/images')}/${req.params.fileName}`)
);
});
但是,如果要在图像中包含json怎么办?例如,如果您要提供用户的个人资料数据名称,信息等和个人资料图片。
const path = require('path');
app.get('/user/:id', async (req, res, next) => {
const { id } = req.params;
let user;
try {
user = await userService.getUser(id);
} catch (err) {
return next(err);
}
/* user:
* {
* name: "Dash",
* location: "Chicago",
* profilePicture: '5c751e73-a7bc-47c4-b2a5-4ac902e7a2ce.png'
* }
*/
// what next????
});
你做不到
res.type('png');
res.sendFile(path.resolve(`${path.join(__dirname, './data/images')}/${user.profilePicture}`));
和res.send(json)
。那么,您如何同时发送两者?
理想情况下,您不需要。
JSON是纯文本格式。如果要在JSON中包含二进制资源,则必须使用base64对其进行编码。这使它与文本兼容,但是将其大小增加了33%,同时浪费了CPU和内存进行编码和解码。
通常的方法是简单地拥有两个HTTP请求。您的Node.js API服务器将有一个,而配置文件图片则是另一个。由于许多原因,这更好。它解决了您眼前的问题,同时还允许您在应用程序外部托管映像,并利用CDN和缓存。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句