簡體   English   中英

使用Google雲端硬盤API按文件夾ID檢索子項

[英]Retrieve Child Items by Folder Id Using Google Drive API

有什么有效的方式可以通過父文件夾ID加載項目嗎? 到目前為止,我只發現了以下幾種方法:

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;

但是我不喜歡它們,因為它們很慢而且看起來很愚蠢。 有沒有更好的辦法?

我最喜歡2種方式,因為添加其他條件比較容易(例如,rashed = false以僅獲取未垃圾的文件),因此您可以使用單個函數進行搜索並列出全部。

我經常使用Google Drive API,發現性能的主要問題是由於單個文件附加了大量信息(最后一次,而在大多數情況下,我們只需要其中幾個信息即可)應用程序;幸運的是,您可以在搜索中使用items參數獲得部分響應(有關更多信息,請參見Performance Tips文檔 )。

根據經驗,在去年進行了一些測試之后,每個結果僅獲得標題,最后更新日期和ID傳輸的數據減少了近90%,這大大改善了數據傳輸。

如果確實需要獲取所有文件元數據,我建議您首先像示例2中那樣獲取項目列表,但只獲取fileId ,而不是使用Parallel.ForEach(.Net 4.0+)獲取具有並行請求的所有文件元數據。

通過這種方式,我能夠提高性能:

var items = _driveService.Files.List();

items.Q = string.Format("'{0}' in parents and trashed = false", folderId);
items.Fields = "items(id,title,fileSize,mimeType)";

var result = items.Execute().Items;

感謝@smokybob

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM