Загрузка данных png в Contentful по типу контента: application / octet-stream, с основным узлом https - PullRequest
0 голосов
/ 27 сентября 2019

Требуются базовые пакеты узлов.Я использую Node 8.10 в лямбда-выражении.

Я хотел бы загрузить image.png в Contentful, подобный этому примеру скручивания здесь .Я не уверен, нужно ли мне сначала сохранить файл на моем сервере, а затем прочитать файл и воспроизвести его.Или я могу просто выполнить потоковую передачу из строки base64?

Ниже приведен упрощенный код, но в основном я использую Puppeteer page.evaluate () для получения map.getCanvas().toDataURL();Я отправляю эти данные в Node для работы, и моя цель - загрузить их в Contentful.

Как создать http-запрос с базовым модулем Node https, который похож на этот пример curl ?

$ curl -i -XPOST\ -H "Тип контента: приложение / поток октетов" \ -H "Авторизация: Носитель" \ --data-binary "@ / Users / ben / my-cute-cat.jpg" \
https://upload.contentful.com/spaces//uploads

  const rawBase64 = mapImage.base64.split(',')[1];
  const data = Buffer.from(rawBase64, 'base64');
  const byteLength = Buffer.byteLength(data, 'base64');

  const headers = {
    'Authorization': `Bearer ${cmt}`,
    'Content-Type': 'application/octet-stream',
  };

  const options = {
    method: 'POST',
    headers,
    hostname,
    path: `/${pathAsset}`,
    body: data,
  };

  const request = https.request(options, res => {
    let buffers = [];
    res.on('data', buffer => {
      buffers.push(buffer);
    });

    res.on('error', error => {
      console.log({ error });
    });

    res.on('end', () => {
      console.log('ENDED');
    });
  });

  request.write(buffers);
  request.end();

Нужно ли сначала конвертировать этот файл в png на сервере, а затем использовать этот файл в запросе?Или я могу просто использовать буфер из base64?Очень важно, чтобы я использовал application / octet-stream.

...