Загрузка папок из Google Cloud Storage Bucket с NodeJS - PullRequest
0 голосов
/ 01 марта 2019

Мне нужно загрузить папки с NodeJS из моего Buckek в Google Cloud Storage.Я прочитал всю документацию и нашел только способ загрузки файлов, а не папок.Мне нужно получить папку для загрузки файлов пользователя.

Может ли кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Как сказал Дуг, Google Cloud Storage покажет вам структуру разных каталогов, но на самом деле в корзинах нет папок.

Однако вы можете найти несколько обходных путей в вашем коде для создания этого самогота же структура папок самостоятельно.Для обходного пути, который я предложил, вам нужно использовать библиотеки, такие как shelljs , которые позволят вам создавать папки в вашей системе.

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

Теперь, собрав все это вместе, вы можете получить полный путь к файлу, который вы собираетесь загрузитьпроанализируйте его, чтобы отделить папки от реального файла, затем создайте структуру папок, используя метод mkdir из shelljs.

Для меня изменение метода загрузки файлов в учебнике было примерно таким:

var shell = require('shelljs');
[...]
async function downloadFile(bucketName, srcFilename, destFilename) {
  // [START storage_download_file]
  // Imports the Google Cloud client library
  const {Storage} = require('@google-cloud/storage');

  // Creates a client
  const storage = new Storage();

  //Find last separator index
  var index = srcFilename.lastIndexOf('/');
  //Get the folder route as string using previous separator
  var str = srcFilename.slice(0, index);
  //Create recursively the folder structure in the current directory
  shell.mkdir('-p', './'+str);
  //Path of the downloaded file
  var destPath = str+'/'+destFilename;

  const options = {
    destination: destPath,
  };

  // Downloads the file
  await storage
    .bucket(bucketName)
    .file(srcFilename)
    .download(options);

  console.log(
    `gs://${bucketName}/${srcFilename} downloaded to ${destPath}.`
  );
  // [END storage_download_file]
}
0 голосов
/ 01 марта 2019

Вы захотите использовать метод Bucket getFiles для запроса файлов, которые вы хотите загрузить, а затем загрузить каждый из них по отдельности. Узнайте больше о том, как использовать базовый список API .В облачном хранилище нет операций с папками (поскольку на самом деле папок нет, есть только пути к файлам, которые выглядят как папки).

...