如何使用REST API递归获取SharePoint文档库的子文件夹,文件夹数和文件数?

问题描述

假设我在SharePoint中有一个名为 FileManager 的文档库。在此文件管理器中,我有多个子文件夹,并且每个子文件夹都有多个文档。现在,我想计算有多少个文件夹和文档可用。

例如:子文件夹A,子文件夹B,子文件夹C->这三个子文件夹都位于文件管理器文档库下。现在,子文件夹可能有许多子文件夹。现在,我想遍历所有这些子文件夹及其子文件夹,以使用REST API获取其中的文件夹和文件数。

就像, 子文件夹A ---> 4个文件夹和100个文档 子文件夹B ---> 10个文件夹和22个文档

这就是结果的结果。

我们如何通过使用REST API实现这一目标?

解决方法

请参考以下方法:

端点:发布 /_api/Web/lists/getbytitle('Documents')/getitems

身体:

{  
      "query" : {
                 "__metadata": { "type": "SP.CamlQuery" },"ViewXml" : "<View Scope='RecursiveAll'><ViewFields><FieldRef Name='FileLeafRef' /></ViewFields><Query><Where><And><BeginsWith><FieldRef Name='FileRef' /><Value Type='Lookup'>/sites/sbdev/Shared Documents/Pictures</Value></BeginsWith><Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>1</Value></Eq></And></Where></Query></View>"               
       }
}

有2个过滤器:

<BeginsWith><FieldRef Name='FileRef' /><Value Type='Lookup'>/sites/sbdev/Shared Documents/Pictures/</Value></BeginsWith>

此过滤器用于获取路径以'/ sites / sbdev / Shared Documents / Pictures /'开头的所有项目

<Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>0</Value></Eq>

这是用于过滤文件夹/文件的

我已经在我的SP在线环境中对其进行了测试,请您尝试一下吗?