API不会列出新创建的文件夹

问题描述 投票:0回答:1

我正在使用Google Drive API V3。我正在尝试列出现有文件夹中的文件和文件夹。之前,该文件夹仅包含文件。清单返回了所有文件。然后,当我创建2个新文件夹时。我找不到这两个文件夹。

下面显示的是我的C#方法:

        public void FindFiles(FindFilesParam p)
        {
            // Define parameters of request.
            FilesResource.ListRequest listRequest = _service.Files.List();
            listRequest.PageSize = p.PageSize;
            //listRequest.Fields = "nextPageToken, files(id, name)";
            //listRequest.Fields = "nextPageToken, files(*)";
            //listRequest.Fields = "nextPageToken, files(id, name, md5Checksum, createdTime, modifiedTime, size)";
            listRequest.Fields = "nextPageToken, files(*)";
            if ( !string.IsNullOrEmpty(p.FolderId))
                listRequest.Q = $@"('{p.FolderId}' in parents)";
            Google.Apis.Drive.v3.Data.FileList fileList = listRequest.Execute();
            while (!string.IsNullOrWhiteSpace(fileList.NextPageToken))
            {
                listRequest.PageToken = fileList.NextPageToken;
                fileList = listRequest.Execute();
                if (FindFilesReturnedPage != null)
                {
                    var e = new FindFilesReturnedPageEventArgs(
                        fileList.Files, p.RelativePath);
                    FindFilesReturnedPage(this, e);
                    if (e.Cancel)
                        break;
                }
            }

            if (FindFilesFinished != null)
                FindFilesFinished(this, EventArgs.Empty);
        }

    public class FindFilesParam
    {
        public FindFilesParam()
        {
            PageSize = 10;
        }

        public string FolderId { set; get; }
        public string RelativePath { set; get; }
        public int? PageSize { set; get; }
    }


// Calling this as follows:

FindFiles(new FindFilesParam()
{
    FolderId = "1hYcRWXaQcg1Noh06rPCouIgIl5TZ8BWP",
    RelativePath = string.Empty
});
c# google-drive-api google-api-dotnet-client
1个回答
0
投票

您未使用文件列表的第一页,while开头的代码将覆盖在while之外创建的第一文件列表页。

使用这段代码来确保您同时使用第一个和最后一个文件列表页面:

 Google.Apis.Drive.v3.Data.FileList fileList = listRequest.Execute();
 while (true) {
     .......
     //Print or use files list
     ........

     //Break loop if there's no NextPageToken
     if(!string.IsNullOrWhiteSpace(fileList.NextPageToken)) break;

     listRequest.PageToken = fileList.NextPageToken;
     fileList = listRequest.Execute();
}
© www.soinside.com 2019 - 2024. All rights reserved.