列出文件夹和文件从特定文件夹在谷歌驱动器



我试图从使用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.js中使用googleapi来实现这个。
  • 你已经能够检索文件列表使用驱动器API v3与googleapi。

修改点:

  • 当前阶段,当drive.files.list({q: query, fields: 'files(id)'})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);
}
);
  • 本例中authconst drive = google.drive({version: 'v3', auth})auth

结果:运行上述脚本,在console.log(fileList);处得到如下结果:fileList是包含子文件夹的特定文件夹下所有文件的文件列表。

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

  • node-getfilelist

最新更新