我有一个使用express的基本节点服务器设置,我的一条路由被设置为通过查询参数接收图像的url,所需的大小和输出格式(高度和输出格式是可选的)。图像被格式化,返回base64字符串,然后我将其转换为缓冲区。当我尝试将该缓冲区返回给客户端时,它只会发送一个空响应。我可以看到200的响应代码,正确的内容类型和内容长度,但是响应完全为空。
我尝试在res.send(),res.end()和res.write()之间切换没有成功。我已将缓冲区写入文件以确认它不是损坏的数据,文件写入成功并且图像数据正确。
app.get('/imageprocessor/resize', async (req, res) => {
try {
const { url, width, height, outputFormat } = req.query;
if (!url || !width) {
return res.status(400).send({
type: 'Invalid request',
message: 'You are missing one or more the required query params',
});
}
const imageData = await resizeHelper(url, width, height, outputFormat);
const imgBuffer = Buffer.from(imageData, 'base64');
res.type(`image/${outputFormat || 'jpeg'}`).send(imgBuffer);
} catch (err) {
console.log('--ERROR--');
console.log(err);
return res.status(err.statusCode || 500).send('Could not process image');
}
});
我希望响应允许我粘贴如下网址:
进入我的浏览器,它将返回一个调整大小的图像。想法是能够在标记的src属性中使用此网址。