Office 365 MyFiles API - 如何在One Drive文件夹的根目录中获取直接子项

时间:2014-10-13 12:39:02

标签: api office365

我正在尝试使用Office 365 API tool for Visual Studio 2013 (update 3)的新夏季版本。它工作得很好,除了我遇到的一个问题,也可以称之为缺少功能。

我发现没有合理的方法可以使用新添加的SharePointClient库从我的One Drive for Business文档库中检索根文件夹的直接子文件。

SharePointClient.Files的API调用将检索整个文档库中的所有文件和文件夹,包括子文件夹。因此,为了只获得直接孩子,我必须翻阅所有文档和文件夹并分析他们的URL。这对我的应用场景是不可接受的。对于子文件夹,我可以得到这样的直接子项:SharePointClient.Files["<folder_id>"].ToFolder().Children这是我需要的,但它不能应用于根文件夹。

我试图直接使用REST API,同样请求GET ../_api/files将检索默认文档库中的所有文件和文件夹,我发现没有简单的方法只列出根的直接子项。此外,没有方便的方法来获取SharePointClient.Files自动使用的默认文档库的路径或GUID。 解析REST API调用的结果XML我可能会获得默认文档库的GUID,这将允许我使用不同的REST API单独列出根文件夹的文件和文件夹,但这些调用会导致不同的XML模式SharePointClient使用的。这意味着,为了只获取根的直接子节点,我必须重新实现整个SharePointClient库。

如果有人有一些好的建议,我会非常感激。

1 个答案:

答案 0 :(得分:0)

我刚遇到同样的问题 - 希望在api工具的发布版本之前解决这个问题。这是我为了获得根文件夹内容所做的工作:

[Create your spClient = SharePointClient]
var allFiles = await spClient.Files.ExecuteAsync();
var rootFiles = allFiles.CurrentPage.Where(i => !i.Id.Contains("/"));

您丢失了IPagedCollection包装器,您可能需要获取超过“CurrentPage”才能查看所有文件,但这是我找到的最佳解决方法。然后,我就可以使用上面提到的'ToFolder()'方法列出子文件夹的内容。