c# - API 未列出新创建的文件夹
问题描述
我正在使用 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();
}
推荐阅读
- python - 获取 IndexError:列表索引超出范围试图翻译文件
- android - 重构主分支代码时如何合并git分支
- javascript - 样式组件不适用于 create-react-library
- c# - 手机,如何检查被触摸的东西?
- python - 套接字python无法将信息发送到服务器“client.send(name)”
- timescaledb - 如何将历史数据加载到超表中,并让聚合视图拾取它
- android - Android Room:如何从连接表中返回行
- python - 将 XML 转换为几个数据帧时,如何以动态方式命名这些 dfs?
- django - 如何对模型进行 Django 查询,我按字段 A 排序,但在字段 B 上过滤不同?
- apache-spark - 如何在 PySpark 中聚合百分位数?