是否存在被父文件夾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