首页 > 解决方案 > 如何使用 C# 在 Google Drive v3 API 的特定文件夹中查找文件?

问题描述

我有一个顶级父文件夹 A,然后在另一个名为 B 的文件夹中,然后我在这些文件夹中有其他文件夹,使用数字 001、002、003 等。在每个文件夹中我都有一个图像。

我要做的就是使用绝对路径按顺序查找所有图像。所以:

folderpath = "/A/B/"
foreach folder inside folderpath:
    //folder is going to be 001, 002, 003
    files = folder.listfiles()
    if (files.Count == 1)
        Console.WriteLine(files[0].Name);

我怎样才能做到这一点?

标签: c#.netdatabasegoogle-drive-api

解决方案


基本上,您正在查看两个请求。第一次请求查找目录文件id(父id)。在该目录中查找文件的第二个请求。

获取名称为A的文件夹:

var fileListRequest = service.Files.List();
fileListRequest.Q = "mimeType = 'application/vnd.google-apps.folder' and name contains 'A'";
var fileListResponse = fileListRequest.Execute();

获取具有上一个请求的父 id 的所有文件。

var filesInParent = service.Files.List();
filesInParent.Q = $"parents in {fileListResponse.Files.FirstOrDefault().Id}";
var allFilesInParentResponse = filesInParent.Execute();

如果您有多个名为 A 的目录,则会出现问题,在这种情况下,您可能需要检查其父目录以确保您拥有所需的正确目录。

诀窍是检查mimeType = 'application/vnd.google-apps.folder'这是否意味着它是一个文件夹。

搜索文档

可以在此处找到有关搜索的一些背景信息

列出谷歌驱动器上的所有文件

另一种解决方案是仅列出您的谷歌驱动器上的所有文件并在本地对其进行排序。由于页面流媒体的性质,如果您的驱动器帐户上有很多文件,我不建议这样做,因为每次提取都会占用您的配额但是如果您有兴趣,我有一个关于如何做到这一点的教程。 列出 Google 云端硬盘上的所有文件


推荐阅读