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