当前位置: 首页 > 知识库问答 >
问题:

使用NodeJS从谷歌云存储桶下载文件夹

田向荣
2023-03-14

我需要从我的谷歌云存储从我的桶中下载NodeJS文件夹。我读了所有的留档,我只找到了下载文件而不是文件夹的方法。我需要获取/下载文件夹以提供用户的下载文件

有人能帮我吗?

共有2个答案

袁飞鹏
2023-03-14

您需要使用Bucket的getFiles方法来查询要下载的文件,然后逐个下载。了解有关如何使用基础列表API的更多信息。云存储中没有文件夹操作(因为实际上没有任何文件夹,只有文件路径,看起来像是被组织为文件夹)。

卢出野
2023-03-14

正如Doug所说,Google Cloud Storage会向您展示不同目录的结构,但实际上存储桶中没有文件夹。

但是,您可以在代码中找到一些变通方法,以便自己创建完全相同的文件夹结构。对于我提出的解决方案,您需要使用shelljs等库,这将允许您在系统中创建文件夹。

遵循本关于云存储的GCP教程,您将找到例如如何从存储桶中列出或下载文件的示例。

现在,将所有这些放在一起,您可以获得要下载的文件的完整路径,解析它以将文件夹与实际文件分开,然后使用shelljs中的mkdir方法创建文件夹结构。

对我来说,在教程中修改下载文件的方法是这样的:

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]
}
 类似资料:
  • 我是Google Cloud Platform的新手。我已经在datalab上训练了我的模型,并将模型文件夹保存在云存储中。我可以通过右键单击文件将桶中的现有文件下载到本地计算机-

  • 我在尝试从谷歌云存储下载CSV文件时遇到了一个问题。出于某种原因,它一直以字节而不是可读文本的形式下载文件。当我在Excel中打开下载的CSV时,Excel已经足够智能,可以将其转换为可读文本。我在这里错过了什么?我检查了谷歌的文档,但找不到任何好的信息来完成它们。提前谢谢你! 这是错误:UnicodeDecodeError:“utf-8”编解码器无法解码位置15-16的字节:无效的连续字节

  • 我有一个python脚本,它获取已上传到google云存储桶的文件列表,并尝试以字符串形式检索数据。 代码很简单: 我的问题是,我上传的数据存储在bucket中的文件夹中,因此路径类似于: 当google library试图下载文件时,它会以GET请求的形式获取该文件,该请求将上述路径转换为: 有没有办法阻止这种情况发生/通过这种方式下载文件?干杯

  • 试图通过存储传输将数据从AWS S3拉到谷歌云存储。 我有S3桶访问密钥ID和秘密访问密钥,并能够从gsutil(从笔记本电脑)复制,但它从存储传输抛出权限错误。 不明白它是如何与gsutil工作,但不与存储传输。 错误消息: 有没有办法在计算引擎中使用gsutil将文件从S3复制到GCS? 谢谢,

  • 我有一个处理CSV文件并返回一些分析的应用程序。我的用户将文件存储在GCP云存储桶中,我希望他们能够向我传递一个存储桶URL和一些身份验证令牌/签名URL,然后应用程序将下载文件并根据需要解析它们。 阅读GCP留档时,我遇到了以下gsutil命令: 这正是我所需要的,但是我正在通过一些REST API HTTP请求寻找同样的功能。我肯定有这样的东西存在,但似乎找不到。或者,如果我可以“列出”一个存