首页 > 解决方案 > 如何列出特定文件夹中的文件夹和文件

问题描述

我对 google drive api 有一些疑问。我正在关注这里的代码(https://everyday-be-coding.blogspot.com/

  1. 如何将默认文件列表长度(100)从谷歌驱动器更改为完整文件列表长度?
  2. 如何避免从谷歌驱动器的垃圾中列出文件?
  3. 如何在谷歌驱动器中使用文件夹名称搜索并列出特定文件夹中的内容?

这些是我在使用 google drive api 时面临的问题。请帮助我解决这些问题。

这是我用来列出文件的代码

 public static List<GoogleDriveFiles> GetDriveFiles()
    {
        DriveService service = GetService();

        // Define parameters of request.

        FilesResource.ListRequest FileListRequest = service.Files.List();
        FileListRequest.Q = "mimeType = 'application/vnd.google-apps.folder'";

        FileListRequest.Fields = "nextPageToken, files(id, name, size, version, trashed, createdTime)";

        // List files.
        IList<Google.Apis.Drive.v3.Data.File> files = FileListRequest.Execute().Files.Where(c => c.Trashed == false).ToList();
        List<GoogleDriveFiles> FileList = new List<GoogleDriveFiles>();

        if (files != null && files.Count > 0)
        {
            foreach (var file in files)
            {
                GoogleDriveFiles File = new GoogleDriveFiles
                {
                    Id = file.Id,
                    Name = file.Name,
                    Size = file.Size,
                    Version = file.Version,
                    CreatedTime = file.CreatedTime
                };
                FileList.Add(File);
            }
        }
        return FileList;
    }

标签: c#google-apigoogle-drive-apigoogle-api-dotnet-client

解决方案


如何将默认文件列表长度(100)从谷歌驱动器更改为完整文件列表长度?

files.list作为默认最大页面大小 100,但您可以通过发送 pageSize 参数来增加它,您可以将其设置在 100 - 1000 之间。

之后,您将需要使用 NextPageToken。你很幸运,因为我们在 C# 中有一个 PageStreamer 方法

var pageStreamer = new Google.Apis.Requests.PageStreamer<Google.Apis.Drive.v3.Data.File, FilesResource.ListRequest, Google.Apis.Drive.v3.Data.FileList, string>(
                                                   (req, token) => request.PageToken = token,
                                                   response => response.NextPageToken,
                                                   response => response.Files);

我在这里有一个关于如何使用它的教程https://www.daimto.com/list-all-files-on-google-drive/

如何避免从谷歌驱动器的垃圾中列出文件?

File.list 有另一个参数叫做 q 参数,它允许你搜索你正在寻找的文件

因此以下内容将忽略已删除的文件。

q = trashed = false

如何在谷歌驱动器中使用文件夹名称搜索并列出特定文件夹中的内容?

为此,您需要找到您正在寻找的文件夹,最简单的方法是再次使用 q 参数并仅搜索具有该名称的文件夹将帮助您找到您正在寻找的文件夹。

mimeType != 'application/vnd.google-apps.folder' and name = 'hello'

一旦你有它保存该文件夹的file.id

mimeType != 'application/vnd.google-apps.folder' and name = 'hello'

然后您可以发出另一个请求,该请求将找到父文件夹中的所有文件

'the file id here' in parents

测试您的搜索的最佳位置是在此处的文档页面上尝试我

我的教程使用 C# 在 Google Drive 上搜索文件


推荐阅读