SharePoint 2010开发:客户端对象模型的文件上传与下载

4星 · 超过85%的资源 需积分: 13 30 下载量 84 浏览量 更新于2024-09-19 收藏 127KB DOCX 举报
"本文主要介绍如何在SharePoint 2010环境中使用客户端对象模型(Client Object Model)进行文件的上传和下载操作。" 在SharePoint 2010的开发中,客户端对象模型(Client Object Model)提供了一种便捷的方式来远程访问SharePoint站点的数据,而无需在服务器端进行交互。在进行文件操作时,如上传和下载,我们首先需要引入两个关键的DLL文件:Microsoft.SharePoint.Client.dll和Microsoft.SharePoint.Client.Runtime.dll。 1. 获取ListItemCollection 获取SharePoint列表中的特定列表项(ListItem)是通过CAML查询实现的。CAML(Collaborative Application Markup Language)是一种XML语法,用于在SharePoint中表达查询条件。以下是如何使用CAML查询来获取名为"FileLeafRef"字段匹配特定文档名的ListItemCollection: ```csharp ListItemCollection listItems = GetListItemCollectionFromSP("FileLeafRef", documentName, "Text", 1); ``` `GetListItemCollectionFromSP` 方法接收四个参数:字段名、字段值、值类型和返回的行数限制。这个方法内部创建一个 `ClientContext` 对象,连接到指定的SharePoint站点,并使用 `Lists.GetByTitle` 获取指定名称的文档库。然后,创建一个 `CamlQuery` 对象并设置其 `ViewXml` 属性为CAML查询字符串,最后通过 `List.GetItems(camlQuery)` 获取列表项集合。 2. 上传文件到SharePoint文档库 上传文件到SharePoint文档库通常涉及以下几个步骤: - 创建一个新的 `FileCreationInformation` 对象,用于定义新文件的信息。 - 使用 `Web.GetFolderByServerRelativeUrl` 获取目标文件夹。 - 将本地文件内容转换为 `byte[]`,赋值给 `FileCreationInformation` 的 `Content` 属性。 - 使用 `Folder.Files.AddUpload` 或 `Folder.Files.Add` 方法将文件上传到SharePoint。 3. 下载文件从SharePoint文档库 下载文件的流程相对简单: - 首先,通过列表项ID或文件URL获取 `File` 对象。 - 然后,调用 `File.OpenBinaryStream` 方法获取文件的二进制流。 - 最后,你可以将这个流写入到本地文件系统,实现文件下载。 以下是简化的代码示例: ```csharp // 上传文件 using (FileStream fileStream = new FileStream(filePath, FileMode.Open)) { FileCreationInformation newFile = new FileCreationInformation(); newFile.Content = fileStream.ToArray(); newFile.Url = fileName; Microsoft.SharePoint.Client.File uploadFile = documentsList.RootFolder.Files.Add(newFile); clientContext.Load(uploadFile); clientContext.ExecuteQuery(); } // 下载文件 Microsoft.SharePoint.Client.File file = clientContext.Web.GetFileByServerRelativeUrl(fileRelativeUrl); clientContext.Load(file); clientContext.ExecuteQuery(); using (MemoryStream stream = new MemoryStream()) { file.CheckedOut(); file.SaveBinaryDirect(clientContext, stream); using (FileStream downloadFileStream = File.Create(downloadFilePath)) { stream.Seek(0, SeekOrigin.Begin); stream.CopyTo(downloadFileStream); } } ``` 在实际开发中,确保处理好异常,对SharePoint上下文进行适当的管理,以及在适当的时候释放资源。以上内容提供了SharePoint 2010客户端对象模型进行文件操作的基础知识,但实际应用可能需要根据具体需求进行调整和优化。