caml library
为了使用ClientContext,我们需要添加两个dll引用到我们的项目中。Microsoft.SharePoint.Client.dll和Microsoft.SharePoint.Client.Runtime.dll。在本博文中,我们将学习如何:
从SharePoint文档库中通过CAML获取ListItemCollection
上载一个文档到SharePoint 文档库
从SharePoint文档库下载一个文档
从SharePoint文档库中通过CAML获取ListItemCollection
我们可以像下面这样获取ListItemCollection:
ListItemCollection listItems = GetListItemCollectionFromSP("FileLeafRef", documentName, "Text", 1);
GetListItemCollectionFormSP方法可以用来获取列表项,其中第一个参数Name - 为FieldRef的名称,第二个参数value=FieldRef的值,第三个参数type - 是值的类型,最后一个参数rowLimit - 是返回最多多少条记录。
private static ListItemCollection GetListItemCollectionFromSP(string name, string value, string type, int rowLimit)
{
ListItemCollection listItems = null;
using (ClientContext clientContext = new ClientContext(siteURL))
{
List documentsList = clientContext.Web.Lists.GetByTitle(documentListName);
CamlQuery camlQuery = new CamlQuery(); ;
camlQuery.ViewXml =
@"<View>
<Query>
<Where>
<Eq>
<FieldRef Name='" + name + @"'/>
<Value Type='" + type + "'>" + value + @"</Value>
</Eq>
</Where>
<RowLimit>" + rowLimit.ToString() + @"</RowLimit>
</Query>
</View>";
listItems = documentsList.GetItems(camlQuery);
clientContext.Load(documentsList);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
}
return listItems;
}
上载一个文档到SharePoint 文档库
本例中我们需要上载文档到SharePoint文档库,同时更新该文档的元数据信息。比如通过ClientContext将一个说明字段设置为“核心内容”。代码如下:
public static void UploadDocument(string siteURL, string documentListName,string documentListURL, string documentName, byte[] documentStream)
{
using (ClientContext clientContext = new ClientContext(siteURL))
{
//获取文档库
List documentsList = clientContext.Web.Lists.GetByTitle(documentListName);
var fileCreationInformation = new FileCreationInformation();
//指定内容 byte[]数组,这里是 documentStream
fileCreationInformation.Content = documentStream;
//允许文档覆盖
fileCreationInformation.Overwrite = true;
//上载 URL地址
fileCreationInformation.Url = siteURL + documentListURL + documentName;
Microsoft.SharePoint.Client.File uploadFile = documentsList.RootFolder.Files.Add(fileCreationInformation);
//更新元数据信息,这里是一个显示名为“描述”的字段,其字段名为“Description0”
uploadFile.ListItemAllFields["Description0"] = "核心内容";
uploadFile.ListItemAllFields.Update();
clientContext.ExecuteQuery();
}
}
从SharePoint文档库下载一个文档
我们可以用如下代码下载一个文档
public static Stream DownloadDocument(string siteURL, string documentName)
{
ListItem item = GetDocumentFromSP(documentName);
if (item != null)
{
using (ClientContext clientContext = new ClientContext(siteURL))
{
FileInformation fInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, item["FileRef"].ToString());
return fInfo.Stream;
}
}
return null;
}
private static ListItem GetDocumentFromSP(string documentName)
{
//这个方法上面讨论过了,用于从SharePoint文档库获取列表项集合
ListItemCollection listItems = GetListItemCollectionFromSP("FileLeafRef", documentName, "Text", 1);
return (listItems != null && listItems.Count == 1) ? listItems[0] : null;
}
调用示例:
static string siteURL = "http://sp2010u/it";
static string documentListName = "共享文档";
static void Main(string[] args)
{
UploadTest();
DownloadTest();
Console.ReadLine();
}
private static void DownloadTest()
{
string downloadDocumentName = "Lesson 2.pptx";
Stream s = DownloadDocument(siteURL, downloadDocumentName);
string saveTo = @"C:\" + downloadDocumentName;
// 创建一个写入流
FileStream writeStream = new FileStream(saveTo, FileMode.Create, FileAccess.Write);
// 写入到该流
ReadWriteStream(s, writeStream);
Console.WriteLine("下载完成!");
}
private static void UploadTest()
{
string uploadDocumentName = "Lesson 1.pptx";
string openFrom =@"C:\"+uploadDocumentName;
if (!System.IO.File.Exists(openFrom))
{
throw new ArgumentException(String.Format("{0} 不存在",openFrom), "openFrom");
}
FileStream fStream = System.IO.File.OpenRead(openFrom);
byte[] contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
//上载到“共享文档”文档库下的“销售计划”文档集中
UploadDocument(siteURL, documentListName, "/Shared%20Documents/%E9%94%80%E5%94%AE%E8%AE%A1%E5%88%92/", uploadDocumentName, contents);
Console.WriteLine("上载完成!");
fStream.Close();
}
// readStream 是你需要读取的流
// writeStream 是你需要写入的流
private static void ReadWriteStream(Stream readStream, Stream writeStream)
{
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesRead = readStream.Read(buffer, 0, Length);
// 写入要求的字节
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, Length);
}
readStream.Close();
writeStream.Close();
}
转载于:https://www.cnblogs.com/xdanny/p/11569733.html
caml library相关推荐
- 对CAML查询语句的几点小记
CAML(Collaborative Application Markup Language)--协作应用程序标记语言,在调用WSS提供的诸多Web Service时进行数据查询的一组XML规范,通过 ...
- SharePoint中CAML使用的一些总结
协作应用程序标记语言 (CAML) 是一种基于 XML 的语言,用于在 Windows SharePoint Services 中定义在网站和列表中使用的字段和视图.CAML 还用于在网站设置过程中定 ...
- Sharepoint 中的CAML 语言
协作应用程序标记语言 (CAML) 是一种基于 XML 的语言,用于在 Windows SharePoint Services 中定义在网站和列表中使用的字段和视图.CAML 还用于在网站设置过程中定 ...
- System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so“ not found
Android Studio 配置OpenCV 的时候出现这样的提示 黄色警告libc++_shared.so" not found : System.err: java.lang.Unsa ...
- Microsoft Anti-Cross Site Scripting Library V1.5 发布了
Microsoft Anti-Cross Site Scripting Library V1.5 发布了 微软反跨站攻击脚本库 v1.5.此下载包含Microsoft Application Secu ...
- android studio islibrary,通过AndroidStudio发布Android Library到Jcenter[超详细]
这篇文章很长 如果已经对jcenter,maven有了一些概念,可以直接看我的另外一篇精简文章: 快速发布Abdroid Library到JCenter[精简] 开始之前先明白几个概念 maven M ...
- Boom Library 93套影视游戏无损配乐音效素材合集包
Boom Library 93套影视游戏无损配乐音效素材合集包 素材压缩包大小共:851G 每个合集为独立压缩包 可选择性下载 云桥网络 平台获取合集包 01.BOOM Library Assault ...
- Lumion模型库 Unique Pro Lumion Library 2021
Lumion模型库 Unique Pro Lumion Library 2021 独特的专业图书馆2021 大小:12G 云桥网络 平台获取素材 这些包包括: 01–集总效果–准备渲染的外部设置 用 ...
- Enterprise Library 4 数据访问应用程序块
Enterprise Library 数据访问应用程序块简化了实现常规数据访问功能的开发任务.应用程序可以在各种场景中使用此应用程序块,例如为显示而读取数据.传递数据穿过应用程序层( applicat ...
- 【C++】C++11 STL算法(八):对未初始化内存的操作(Operations on uninitialized memory)、C库(C library)
对未初始化内存的操作(Operations on uninitialized memory) 一.uninitialized_copy 1.原型: template< class InputIt ...
最新文章
- javascript引擎V8精要(1)
- 通过自定义配置实现插件式设计
- 浅谈Taro和Apollo在开发过程中的实践
- 关于mysql保存数据的时候报问题分析
- Leetcode 142. Linked List Cycle IIJAVA语言
- 1.8 Linux用户与用户组文件权限
- DescribingDesign Patterns 描述设计模式
- MySQL驱动jar包的下载--保姆教程
- matlab 象限图,【数据可视化】Tableau教程(十)象限图
- 惠普HP ProDesk 400 G2 加装BCM94352HMB网卡
- java反序列化漏洞POP查找_Laravel8反序列化POP链分析挖掘
- 商汤AR开发之旅(1)-- 关于SenseAR SDK
- PotPlayer不支持S/W HEVC(H.265)解码怎么办?一招解决所有的不支持解码
- 变分法 (Calculus of Variations)
- 芯片短缺局势依然严峻,供应链上下该如何破局?
- 月薪2w运营人必备的120款运营神器
- js获取元素的属性值和获取元素内容
- 梅西百货公司 - Macy‘s - Shop Fashion Clothing Accessories
- Cisco AP-如何调整LAP信道
- VRF技术-原理简介