返回图像缓冲区导致响应为空

时间:2019-05-03 09:54:36

标签: javascript node.js image express

我有一个使用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');
  }
});

我希望响应允许我粘贴如下网址:

http://localhost:3000/imageprocessor/resize?url=https://www.yosemite.com/wp-content/uploads/2016/04/El-Capitan-Yosemite-Mariposa-Slide-Photo-by-Chris-Migeon-700x425.jpg&width=350

进入我的浏览器,它将返回一个调整大小的图像。想法是能够在标记的src属性中使用此网址。

0 个答案:

没有答案