如何使用C#连接SharePoint Syntex文档库并读取其中文件?
一、准备工作
- 确保项目中引用
Microsoft.SharePoint.Client和Microsoft.SharePoint.Client.RuntimeNuGet包 - 准备好SharePoint站点URL、目标文档库名称、有权限的账号及密码
二、完整实现代码
以下是包含连接验证、文件列表获取及内容读取的完整代码:
using System; using System.Security; using Microsoft.SharePoint.Client; class SharePointSyntexFileReader { private static void ConnectAndReadLibraryFiles() { try { Console.WriteLine("尝试连接SharePoint站点..."); // 替换为你的SharePoint站点根URL const string siteUrl = "https://yourtenant.sharepoint.com/sites/yourTargetSite"; // 替换为你的文档库名称 const string libraryName = "YourSyntexLibrary"; const string username = "your-account@yourtenant.onmicrosoft.com"; const string pwd = "your-password"; // 将普通密码转换为SecureString SecureString securePassword = new SecureString(); foreach (char c in pwd.ToCharArray()) { securePassword.AppendChar(c); } // 初始化连接上下文 using (ClientContext context = new ClientContext(siteUrl)) { context.Credentials = new SharePointOnlineCredentials(username, securePassword); // 获取目标文档库 List targetLibrary = context.Web.Lists.GetByTitle(libraryName); context.Load(targetLibrary); context.ExecuteQuery(); Console.WriteLine($"成功连接到文档库: {targetLibrary.Title}"); // 查询文档库内所有文件 CamlQuery query = CamlQuery.CreateAllItemsQuery(); ListItemCollection fileItems = targetLibrary.GetItems(query); context.Load(fileItems, items => items.Include( item => item.File.Name, item => item.File.ServerRelativeUrl, item => item.File.Length)); context.ExecuteQuery(); // 遍历并读取文件 Console.WriteLine("\n文档库文件列表及内容读取结果:"); foreach (ListItem item in fileItems) { if (item.File != null) { Console.WriteLine($"文件名: {item.File.Name}, 大小: {item.File.Length}字节"); // 读取文件内容为字节数组 FileInformation fileInfo = File.OpenBinaryDirect(context, item.File.ServerRelativeUrl); using (var memoryStream = new System.IO.MemoryStream()) { fileInfo.Stream.CopyTo(memoryStream); byte[] fileContent = memoryStream.ToArray(); Console.WriteLine($"已读取文件 {item.File.Name} 内容,内容长度: {fileContent.Length}字节"); } } } } } catch (Exception ex) { Console.WriteLine($"操作出错: {ex.Message}"); } } static void Main(string[] args) { ConnectAndReadLibraryFiles(); Console.ReadLine(); } }
三、核心要点说明
- ClientContext:SharePoint CSOM的核心连接对象,负责与站点建立通信
- SharePointOnlineCredentials:用于Office 365账号验证,密码必须转换为
SecureString类型保证安全性 - 文件读取逻辑:通过
File.OpenBinaryDirect获取文件流,可根据需求转换为字节数组、文本等格式 - 权限要求:使用的账号必须拥有目标文档库的读取权限,否则会触发权限异常
内容的提问来源于stack exchange,提问作者prerit pushp
相关产品推荐
相关产品推荐

