我需要从Google Cloud Storage的Buckek中使用NodeJS下载文件夹。我阅读了所有文档,仅找到一种下载文件而非文件夹的方法。我需要获取该文件夹以提供用户的下载文件。
有人可以帮我吗?
答案 0 :(得分:1)
正如Doug所说,Google Cloud Storage会向您显示不同目录的结构,但是存储桶中实际上没有文件夹。
但是,您可以在代码中找到一些解决方法,以自己创建完全相同的文件夹结构。对于我想出的解决方法,您需要使用诸如shelljs之类的库,这些库将允许您在系统中创建文件夹。
在此GCP tutorial on Cloud Storage之后,您将找到例如有关如何从存储桶中列出或下载文件的示例。
现在,将所有这些放在一起,您可以获得要下载的文件的完整路径,将其解析以将文件夹与实际文件分开,然后使用方法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]
}
答案 1 :(得分:0)
您将要使用Bucket的getFiles方法来查询要下载的文件,然后分别下载每个文件。 Read more about how to use the underlying list API。 Cloud Storage中没有文件夹操作(因为实际上没有任何文件夹,只有文件路径看起来像是组织为文件夹一样)。