从sharepoint获取文件及其版本号

时间:2008-08-28 19:58:59

标签: sharepoint versioning

作为临时权宜之计,直到所有设计师都到位为止,我们目前正在处理一大堆xml配置文件。其中一个问题是文件版本控制,因为人们在更新文件时忘记更新版本号(人们通常认为这是完美的)。

因此我认为,当我们将文件存储在Sharepoint中时,我应该能够编写一个脚本来从Sharepoint中提取文件,获取版本号并自动输入/更新Sharepoint中的版本号到文件中。这意味着当有人想要“最新”文件时,他们可以运行脚本并获取版本号正确的最新文件(比它稍微多一些,所以使用脚本的原因不仅仅是自动的好处 - 版本)。

有谁知道如何从Sharepoint获取文件+版本号?

2 个答案:

答案 0 :(得分:1)

我假设您正在讨论列表或库中的文档,而不是12个配置单元中的源文件。如果是这样,每个库都有内置的版本控制。您可以通过单击每个库中提供的表单库设置来访问它(当然,具有适当的管理员权限)。从那里,选择版本控制设置,然后选择适合您的流程的设置。

至于在代码中获取版本号,如果从集合中提取SPListItem,则每个项目都会附加SPListItemVersionCollection个名称版本。

答案 1 :(得分:1)

有一种方法可以通过Web服务来实现,但我在实现自定义事件处理程序方面做得更多。这里有一些代码可以满足您的需求。请记住,您只能从服务器执行此操作,因此您可能希望将其包装在Web服务中以允许从嵌入式设备进行访问。此外,您需要在此代码中引用Microsoft.SharePoint.dll。

using (SPSite site = new SPSite("http://yoursitename/subsite"))
{
    using (SPWeb web = site.OpenWeb())
    {
        SPListItemCollection list = web.Lists["MyDocumentLibrary"].GetItems(new SPQuery());
        foreach(SPListItem itm in list) {
            Stream inStream = itm.File.OpenBinaryStream();
            XmlTextReader reader = new XmlTextReader(inStream);
            XmlDocument xd = new XmlDocument();
            xd.Load(reader);
            //from here you can read whatever XML node that contains your version info
            reader.Close();
            inStream.Close();
        }
    }
}

using()语句用于确保不会创建内存泄漏,因为SPSite和SPWeb是非托管对象。

编辑:如果版本号已被提升为库字段,您可以通过以上for循环中的以下内容访问它:

itm["FieldName"]