node.js - 从 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');
}
});
})
解决方案
我相信你的目标和你目前的情况如下。
- 您要检索特定文件夹下的文件列表。
- 特定文件夹具有子文件夹。
- 您想使用 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);
}
);
- 在这种情况下,
auth
是auth
的const drive = google.drive({version: 'v3', auth})
。
运行上述脚本时,在console.log(fileList);
. fileList
是具有子文件夹的特定文件夹下所有文件的文件列表。
[
{ id: '###' },
{ id: '###' },
,
,
,
]
参考:
推荐阅读
- algorithm - 在矩阵运行时复杂性中搜索单词
- xpath - 可以在二维层次结构中使用 Xpath 寻址节点吗?
- safari - 在右侧的 Safari 中打开新标签页
- r - 如何从同一点开始制作流畅的线条?
- vbscript - 使用 htmlfile COM 对象访问 WSH JScript 中对象的 .getOwnPropertyDescriptor() 方法
- python - 如何将列表中的项目传递到 xpath 以从网站下载文件?
- node.js - 使用 AWS SNS 删除或编辑未读推送通知?
- javascript - matter.js:有什么方法可以为我的精灵设置动画
- java - 读取值表格 excel 单行多列
- python - 如何将列表的行合并成短语(帮助完成代码)?