Альтернатива AWS 'bucket.putObject () метод в Google-облаке / хранилище - PullRequest
0 голосов
/ 11 апреля 2020

Я хотел бы имитировать c следующий AWS вызов с использованием пакета google-cloud / storage

const params = {
                Body: data,
                Key: key,
                ContentType: type
            };
            return new Promise(function (resolve, reject) {
                bucket.putObject(params, function(error, data) {
                    if (error) {
                        console.log('ERROR: ', error);
                        reject(error);
                    }
                    resolve(data);                  
                });
            })

В приведенном выше вызове, если я передам некоторую иерархию каталогов в параметре Key, структура папки будет создана и файл будет правильно размещен.

Например, если я передам Ключ как root / test_folder / input_file. json Тогда файл будет помещен как S3: ///root/test_folder/input_file.json

Я не могу найти аналогичный звонок в google-cloud / storage. Если я использую метод

<bucket>.upload()

, я могу поместить файл в каталог, но я могу загружать ТОЛЬКО файлы!

await storage.bucket(bucketName).upload(filename, {
        destination: 'abc/xyz',

Если я использую

file.save()
Метод

, я могу поместить данные в хранилище, но теперь я не могу поместить их в указанный каталог c!

await file.save(contents);

Мне нужен какой-то способ помещения контента в структуру каталогов в google-storage и структура каталогов может не существовать.

1 Ответ

1 голос
/ 11 апреля 2020

Извините, я ошибся. Это можно просто сделать с помощью метода file.save (). Нам просто нужно указать путь вместе с именем файла.

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

const storage = new Storage();
    const myBucket = storage.bucket('bucket');

    const file = myBucket.file('xxx/yyy/my-file', { generation: 0 });
    const contents = 'This is the contents of the file.';

    file.save(contents, function(err) {
      if (err) {
        file.deleteResumableCache();
      }
    });

Приведенное выше будет хранить файл под

bucket/xxx/yyy
...