使用Sharepoint 2010客户端对象模型搜索以特定扩展名结尾的站点中的所有文档

时间:2011-09-08 14:34:42

标签: c# sharepoint sharepoint-clientobject

我是Sharepoint编程的新手,所以我需要一些指导,了解如何获取Sharepoint网站中存在的所有文档的列表,这些文档的扩展名与传入的值相匹配。


背景:作为合并的一部分,数百万(7TB)的文档被导入Sharepoint而不考虑文件类型,因此我们可以从正在关闭的系统中获取存储的数据。

这些文档中包含危险文件类型,如.exe和.dll文件,我们需要保留这些文件类型,但希望采取适当措施确保这些类型的恶意文件不能直接下载。

我们的计划是提取与我们的搜索列表匹配的每个文件,压缩它,上传zip并删除原始文件。要做到这一点,我们需要一次性应用程序。

实际上涉及多个站点 - 所以理想情况下我喜欢运行一个查询来访问所有站点中的所有文档(它们都在一个根目录下,但它们各自都有自己的数据库)但我很好迭代跨越一组网站。


我的想法是使用Sharepoint客户端对象模型对每个站点执行查询,以便返回给定类型的所有文件的列表。我想

这样的
SharepointSite site = new SharepointSite(siteElement, settings.RootURL);
ClientContext clientContext = site.Context;
ListCollection listCollection = clientContext.Web.Lists;
clientContext.Load(listCollection, l=>l.Name.EndsWith(".exe"));
clientContext.Load(listCollection);
clientContext.ExecuteQuery();

但这绝对不是它。

我该如何处理这个问题?

2 个答案:

答案 0 :(得分:0)

从客户端对象模型中的基本编码开始。您只需要迭代网站,列表及其内容。

http://msdn.microsoft.com/en-us/library/ee857094.aspx

答案 1 :(得分:0)

最后,我创建了一个针对数据库的直接查询,以获取所有匹配文档的特定列表,无需迭代数百万个项目,然后能够使用客户端组件来提取我想要的确切文件。