You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SharePoint Graph API下载未列为Drive的文档库文件(如Site Pages)

如何通过Graph API下载非Drive类文档库(如Site Pages)中的文件

嘿,我来帮你搞定这个问题——我之前也碰到过类似的需求,其实像Site Pages这类没直接列在Drive里的列表,它们的文件还是能通过Graph API下载的,关键是找对正确的接口入口,下面给你两种可行的解决方案:

方法一:直接通过列表项的关联DriveItem获取下载链接

虽然Site Pages不在站点默认的Drive下,但每个列表里的文件项其实都关联着一个driveItem对象,我们可以利用这个导航属性直接拿到下载地址:

  1. 获取带DriveItem信息的列表项
    发起这个请求,把列表项和对应的DriveItem信息一起拉取出来:

    GET https://graph.microsoft.com/v1.0/sites/{siteId}/lists/{listId}/items?expand=driveItem
    

    拿到响应后,每个列表项的driveItem字段里会有一个@microsoft.graph.downloadUrl,这就是直接可用的下载链接,你直接发起GET请求就能获取文件内容了。注意这个链接是短期有效的,如果过期了重新调用上面的接口刷新就行。

  2. 直接下载文件
    用拿到的@microsoft.graph.downloadUrl直接发请求,不需要再走Drive的内容接口,非常方便。

方法二:找到Site Pages对应的隐藏Drive

其实Site Pages列表背后对应着站点里的一个隐藏文档库(Drive),我们可以先找到这个Drive的ID,再用你熟悉的Drive接口下载:

  1. 枚举站点的所有Drive
    先调用这个接口获取站点下的所有Drive:

    GET https://graph.microsoft.com/v1.0/sites/{siteId}/drives
    

    响应里会返回多个Drive,其中对应Site Pages的那个,name字段通常就是Site Pages,你可以根据这个来识别,或者看description字段辅助判断。

  2. 用Drive ID下载文件
    拿到对应的Drive ID后,就可以用你熟悉的Drive内容下载接口了:

    GET https://graph.microsoft.com/v1.0/sites/{siteId}/drives/{driveId}/items/{itemId}/content
    

    这里的itemId可以从之前列表项的driveItem.id里拿到,或者直接枚举这个Drive的items获取。

注意:权限要求

别忘了确保你的账号或应用拥有合适的权限,比如:

  • 应用权限:Sites.Read.All 或者 Sites.ReadWrite.All
  • 委派权限:Sites.Read 或者 Sites.ReadWrite
    如果是涉及敏感内容的文件,可能需要更高的权限,根据实际情况调整就行。

内容的提问来源于stack exchange,提问作者SlavaG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 14:42:52