API 不列出新创建的文件夹

API does not list newly created folders

我正在使用 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
});

您没有使用文件列表的第一页,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();
}