Загрузка папок из корзины Google Cloud Storage с помощью NodeJS

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
4 255
2

Ответы 2

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

Спасибо за ваш ответ, но как я могу предоставить эти файлы в структуре папок, если Google App Engine не позволяет мне создавать папки?

Gabriel 02.03.2019 09:22

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

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

После этого Учебник 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.info(
    `gs://${bucketName}/${srcFilename} downloaded to ${destPath}.`
  );
  // [END storage_download_file]
}

Другие вопросы по теме