如何列出特定文件夹内的文件夹和文件

时间:2019-07-05 04:54:09

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

我对Google Drive API有一些疑问。 我正在从这里(https://everyday-be-coding.blogspot.com/

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

这些是我在使用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;
    }

2 个答案:

答案 0 :(得分:1)

  1. Google云端硬盘中没有文件列表限制,您可以使用 nextPage参数,当出现以下情况时它将在另一个页面中继续 它达到100个文件。
  2. 您可以避免使用query列出“已删除邮件”中的文件 trashed = false
  3. 要搜索文件夹中的文件,您需要文件夹ID和搜索 查询‘folder id' in parents

希望这会有所帮助!

答案 1 :(得分:1)

  

如何从Google驱动器将默认文件列表长度(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/

上有关于如何使用它的教程。
  

如何避免从Google驱动器垃圾箱中列出文件?

File.list还有另一个称为q参数的参数,它将允许您搜索要查找的文件search

因此,以下内容将忽略已破坏的文件。

q = trashed = false
  

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

要执行此操作,您将需要找到要查找的最东方方法的文件夹,即再次使用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

测试您的搜索的最佳地点是文档页面here上的“尝试我”

我的教程Search files on Google Drive with C#