【问题标题】:Getting files and their version numbers from sharepoint从共享点获取文件及其版本号
【发布时间】:2008-08-28 19:58:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: sharepoint versioning


    【解决方案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"]
    

    【讨论】:

      【解决方案2】:

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

      至于获取代码中的版本号,如果你从集合中拉出一个SPListItem,那么每个项目都会附加一个名为Versions的SPListItemVersionCollection

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-09
        相关资源
        最近更新 更多