Конвертируйте двоичные медиа-данные в буфер в Node JS - PullRequest
0 голосов
/ 09 мая 2018

Я использую сторонний API-интерфейс, который возвращает изображение в формате двоичных мультимедийных данных.После получения этих данных я хочу загрузить их в облачное хранилище Google.Для этого мне нужно преобразовать эти данные в буфер.Я пробовал несколько раз, но не смог.

Я использую NodeJS, модуль запроса npm для вызова API для сохранения изображения в облачном хранилище Google.

Вот код:

var binaryData = data;
var bufferData = new Buffer(data);
 request({
          method: "POST",
          url: '/endpoint/upload',
          headers: {
                    'cache-control': 'no-cache',
                    'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW'
                   },
          formData: {
                     filename: {
                     value: fileBase64,
                     options: {
                                filename: 'test.jpg',
                                contentType: 'image/jpeg'
                              }
                     },
                    }
         }, function(err, response, body){
            console.log(body);
         }) 

Ответы [ 2 ]

0 голосов
/ 08 августа 2019

Вам необходимо получить файл в виде потока.Вот полезный пост , который определяет, как это сделать с помощью axios.Как только вы загрузите файл на сервер, вы можете получить его как буфер с fs.readFile.

0 голосов
/ 10 мая 2018

Ваш почтовый запрос должен соответствовать шаблону, описанному в документации . Мой почтовый запрос выглядит так:

req = https.request({
          method: "POST",
          protocol: 'https:',
          hostname: 'www.googleapis.com',
          path: '/upload/storage/v1/b/[bucket-name]/o?uploadType=media&name=[file-name]',
          headers: {
                        'content-type': 'image/png',
                        'content-length': Buffer.byteLength(data),
                        'authorizatoin': Bearer [bearer-token]
                   }
         }, (res) => {
                console.log(res.statusCode);
                console.log(res.statusMessage);
                console.log(res.headers);
                }
         );

Похоже, вам не хватает аутентификации . Вам необходимо использовать OAuth 2.0 для Google Cloud Storage. Убедитесь, что JSON API Cloud Storage тоже включен .

...