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

使用C#从公共SharePoint/OneDrive共享链接下载文件夹内文件

无需认证批量下载公开SharePoint共享文件夹文件的可行思路

核心逻辑

基于公开共享链接的页面内容/REST接口抓取文件列表,复用已获取的FedAuth cookie完成批量下载,全程无需用户手动认证。

1. 抓取文件夹内的文件列表

  • 向公开共享文件夹的URL发送GET请求,带上打开链接时获取的FedAuth和rtFa cookie(这两个是公开共享场景下的关键会话凭证)。
  • 解析返回内容:
    • 若页面是静态渲染,直接用HTML解析库(比如HtmlAgilityPack)定位文件列表元素(通常带ms-list-item类),提取每个文件的服务器相对路径(serverRelativeUrl)或页面内嵌的下载链接片段。
    • 若页面是动态加载(滚动加载更多),抓包分析页面发起的AJAX请求,通常是调用SharePoint的RenderListDataAsStream REST接口,该接口在公开共享场景下无需额外认证,直接复用现有cookie请求即可拿到完整的文件列表JSON数据,从中提取文件路径。
  • 递归处理子文件夹:如果文件夹有嵌套,对每个子文件夹的共享页面/对应REST接口重复上述操作,获取所有层级的文件路径。

2. 构造可直接下载的URL

拿到文件的服务器相对路径后,构造标准的SharePoint下载链接:

https://<你的SharePoint站点域名>/_layouts/15/download.aspx?SourceUrl=<编码后的服务器相对路径>

或者直接使用页面中提取到的现成下载链接,注意对路径中的特殊字符做URL编码。

3. 批量执行下载

  • 复用你已有的httpWebRequest下载逻辑,为每个构造好的下载URL添加FedAuth和rtFa cookie,保持会话一致。
  • 加入简单的重试机制:如果遇到cookie过期,重新请求共享文件夹页面获取新的cookie后继续下载。

注意事项

  • 部分公开共享文件夹可能有下载次数限制,需要做好异常捕获。
  • 解析HTML/JSON时,注意SharePoint页面结构可能因版本略有差异,需要根据实际页面调整选择器或字段提取规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:25:34