如何通过REST接口单次获取SharePoint文档库子文件夹下所有文件
可以实现单次请求获取所有子文件夹内的文件,方案基于 SharePoint 原生 REST 接口 + CAML 查询实现,兼容 SharePoint 2013 及以上版本、SharePoint Online 环境。
核心实现逻辑
通过 GetItems 接口配合递归查询作用域参数,无需循环调用单文件夹查询接口:
- 用CAML查询的
Scope='RecursiveAll'属性指定查询范围覆盖所有子层级 - 过滤参数
FSObjType=0排除子文件夹项,仅返回文件结果 - 通过
FolderServerRelativeUrl指定要查询的根文件夹路径,避免返回整个文档库的内容
请求示例
请求地址(POST请求)
https://<租户域名>/sites/<站点路径>/_api/web/lists/getbytitle('<文档库显示名称>')/GetItems
必填请求头
Accept: application/json;odata=verbose Content-Type: application/json;odata=verbose X-RequestDigest: <当前会话的请求摘要值>
请求体参数
{ "query": { "__metadata": { "type": "SP.CamlQuery" }, "ViewXml": "<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>0</Value></Eq></Where></Query></View>", "FolderServerRelativeUrl": "<根文件夹的服务器相对路径,例:/sites/xxx/共享文档/目标根文件夹>" } }
结果说明
接口返回的 d.results 数组即为所有子文件夹下的全部文件集合,包含文件路径、修改时间、创建人、文件大小等标准元数据字段,你可以根据需求在CAML的<ViewFields>节点中自定义返回字段。
注意事项
- 当目标路径下的文件总数超过5000时会触发列表视图阈值限制,需要给
FSObjType字段添加索引或者在CAML中增加分页参数处理 - 接口返回的文件范围和当前调用账号的权限一致,无读取权限的子文件夹内的文件不会出现在结果中
内容的提问来源于stack exchange,提问作者someone
相关产品推荐
相关产品推荐

