首页 > 解决方案 > 从 Google 驱动器中的特定文件夹列出文件夹和其中的文件

问题描述

我正在尝试使用 node.js 从谷歌驱动器中的特定文件夹中获取文件和文件夹列表。但是,我只获取文件夹列表,而不是这些文件夹中的文件。我究竟做错了什么?

这是我的代码。

app.get('/getFF', (req, res) => {
var folderid = <'my folder id'>;
var query = "'" + folderid + "' in parents";

drive.files.list({q: query, fields: 'files(id)'}, (err, resp) => {
    if (err) throw err;
    const files = resp.data.files;
    if (files.length) {
        files.map((file) => {
        console.log(file);
        });
        res.send(files);
    } else {
    resp.send('No files found');
    }
});

})

标签: node.jsgoogle-apigoogle-drive-apigoogle-api-nodejs-client

解决方案


我相信你的目标和你目前的情况如下。

  • 您要检索特定文件夹下的文件列表。
  • 特定文件夹具有子文件夹。
  • 您想使用 googleapis for Node.js 来实现这一点。
  • 您已经能够使用带有 googleapis 的 Drive API v3 检索文件列表。

修改点:

  • 在当前阶段,当drive.files.list({q: query, fields: 'files(id)'})使用 with时,检索var query = "'" + folderid + "' in parents"文件夹下的文件和文件夹的文件列表。folderid这似乎是当前的规范。为了检索具有子文件夹的特定文件夹下的所有文件的文件列表,需要从每个子文件夹中检索文件列表。
  • 在这个答案中,我想建议为 Node.js使用一个node-getfilelist库。该库可以检索具有子文件夹的特定文件夹下的所有文件的文件列表。我为这种情况创建了这个库。

用法:

1.安装库。

首先,请按如下方式安装库。

$ npm install --save-dev google-drive-getfilelist

或者

$ npm install --global google-drive-getfilelist

2. 示例脚本。

const getfilelist = require("google-drive-getfilelist");

const topFolderId = "###"; // Please set the top folder ID.
getfilelist.GetFileList(
  {
    auth: auth,
    fields: "files(id)",
    id: topFolderId,
  },
  (err, res) => {
    if (err) {
      console.log(err);
      return;
    }
    const fileList = res.fileList.flatMap(({ files }) => files);
    console.log(fileList);
  }
);
  • 在这种情况下,authauthconst drive = google.drive({version: 'v3', auth})
结果:

运行上述脚本时,在console.log(fileList);. fileList是具有子文件夹的特定文件夹下所有文件的文件列表。

[
  { id: '###' },
  { id: '###' },
  ,
  ,
  ,
]

参考:


推荐阅读