是否存在被父文件夹ID加载项的任何有效的方法?直到现在我才发现,这些方式:通过检索文件夹ID子项中使用谷歌云端硬盘API
var children = _driveService.Children.List(folderId).Execute().Items;
var result = children.Select(i =>
{
var item = _driveService.Files.Get(i.Id).Execute();
return item;
});
和
var items = _driveService.Files.List();
items.Q = string.Format("'{0}' in parents", folderId);
var result = items.Execute().Items;
但我不喜欢他们,因为他们是缓慢的,也看起来愚蠢。没有更好的方法吗?
同意第一部分,但不一定是使用多个并联file.gets的。这可能会产生大量的http请求,这些请求会计入配额。您最终可能会被Drive驱动器进行流量控制,这不是一个令人愉快的地方。我已经找到了通过列表结果分页,其中items参数设置合适,启用gzip可以提供最佳的吞吐量。您可以一开始就使用一个小的maxResults,以便您的用户不会为第一个结果等待太久,然后将其增加到100以便后续请求。 – pinoyyid 2014-09-28 07:24:46
@smokybob,谢谢,我忘了检查性能提示部分。现在,我尝试这样做: items.Fields = “项目(编号,名称,档案大小,mime类型)”; 它的工作,但它仍然是该死的缓慢。那么,你说我应该使用TPL,并且没有优化它的“优雅”方式?当你需要“大”数据很多文件 – codeRecap 2014-09-28 11:16:47
@GiorgiZautashvili TPL时,才需要;因为正如pinoyyid指出的那样,你会更快地达到最大请求配额(每天1000万个请求;如果你有1000个用户,这是可能的)。我们只有使用TPL合理获取元数据的情况,并且要将文件复制到另一个帐户;否则我们会得到有限的文件以尽可能快地显示信息(通常是1/2秒顶部),并且只在用户选择文件时加载文件的细节。 – smokybob 2014-09-29 09:25:32