Возвращение буфера изображения приводит к пустому ответу - PullRequest
0 голосов
/ 03 мая 2019

У меня есть базовая настройка сервера узла с использованием экспресс-функции, один из моих маршрутов - это настройка, чтобы через параметры запроса получать URL-адрес изображения, его желаемый размер и формат вывода (высота и формат вывода не являются обязательными).Изображение отформатировано, возвращает строку base64, которую я затем преобразовываю в буфер.Когда я пытаюсь вернуть этот буфер клиенту, он просто отправляет пустой ответ.Я вижу код ответа 200, правильный тип контента и длину контента, но ответ полностью пустой.

Я пробовал переключаться между res.send (), res.end () и res.напишите () без успеха.Я записал буфер в файл, чтобы подтвердить, что данные не повреждены, запись в файл выполнена успешно, а данные изображения верны.

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');
  }
});

Я ожидаю, что ответ позволит мне просто вставитьURL вроде:

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

в мой браузер, и он должен вернуть изображение с измененным размером.Идея состоит в том, чтобы использовать этот URL в атрибуте src тегов.

...