Загрузите файл base64 в GCS, используя SignURL - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь загрузить base64 файл / изображение в облачное хранилище Google , используя подписанный URL . Мой код на стороне сервера (NodeJS) выглядит примерно так:

let {Storage} = require('@google-cloud/storage');

storage = new Storage({
  projectId,
  keyFilename: gcloudServiceAccountFilePath,
});

function generateSignedUrl(){
const options = {
      version: 'v4',
      action: 'write',
      expires: Date.now() + 15 * 60 * 1000, // 15 minutes
      //contentType: 'application/octet-stream'
    };
}

const [url] = await storage.bucket(gcloudBucket)
      .file(`${fileRelativePath}`).getSignedUrl(options);

return url;
}

Теперь, когда я пытаюсь использовать POSTMAN с указанной ниже конфигурацией,

Request: PUT
URL: https://storage.googleapis.com/my-signed-url.. //generated from above code
Headers:
  x-goog-acl: 'public-read'
  Content-Type: 'image/jpeg'
Body:
  raw : 'base64-file-conent'

Мой загруженный файл в GCS остается как base64, и размер файла также отличается, как вы можете видеть в хранилище.

enter image description here

1-е изображение напрямую загружается в GCS с помощью перетаскивания.

2-е изображение загружено с помощью POSTMAN

Не уверен, что я что-то упускаю при создании подписанного URL или каких-либо заголовков при загрузке файла через почтальона.

Спасибо:)

1 Ответ

0 голосов
/ 12 июня 2019

Причиной различия в размерах объектов, загружаемых в облачное хранилище Google, является различие в метаданных объекта.Когда вы загружаете объект изображения с помощью POSTMAN с помощью API REST, заголовок API добавляется как часть метаданных изображения.В этой Документации Google четко указано, что «облачное хранилище хранит эти заголовки как часть метаданных объекта».

Первая строка метаданных Объекта Введение также подтверждает, что с объектами, хранящимися в облачном хранилище, связаны метаданные.Следовательно, заголовки API добавляются как метаданные вашего объекта Image и, следовательно, увеличивают размер объекта.

Объекты изображения, загруженные через консоль, не имеют метаданных объекта, за исключением , они явно установлены .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...