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





Вы захотите использовать метод Bucket получить файлы для запроса файлов, которые вы хотите загрузить, а затем загрузить каждый из них по отдельности. Узнайте больше о том, как использовать базовый API списка. В Cloud Storage нет операций с папками (поскольку на самом деле папок нет, есть только пути к файлам, которые выглядят так, как будто они организованы в виде папок).
Как сказал Даг, 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]
}
Спасибо за ваш ответ, но как я могу предоставить эти файлы в структуре папок, если Google App Engine не позволяет мне создавать папки?