zoukankan      html  css  js  c++  java
  • SharePoint 2010 文档管理之过期归档工具

    来源于:http://www.cnblogs.com/jianyus/p/3226625.html

    前言:使用过SharePoint的人都知道,SharePoint对于操作是便捷的,但是对于数据量承载却是不令人满意的,这样,就要求我们需要更加合理的使用,规范大家的使用规则和习惯,所以,定期清理不必要的文档也就成为了一个问题。

      考虑到这一点,我觉得写一个小工具,用来实现文档归档,是比较方便的办法。当然,如果你愿意,可以封装为TimerJob或者Windows Service都是没有问题的,甚至于Windows计划任务也都是可行的,只要你愿意。

    一、 界面设计:

    clip_image001

      如上图,首先需要输入下载文档需要的用户名、密码、域的名字,否则我们是没有权限下载文档的;

      然后是站点地址,打开SPSite,会同时加载出来所有的SPWeb;

      然后选择我们需要的SPWeb,会自动加载出来所有的文档库;

      选择我们需要的文档库,选择日期,早于这个日期的所有文档,都在归档的范围内;

      勾选自动删除已归档文档,这样会删除已经下载到指定路径的文档,并且不会出现在回收站。

    二、 设计思路:

      很简单的思路,大神勿喷,感谢!

      基于SharePoint 2010 Server版本,服务器端对象模型,需要运行在服务器上。

      通过服务器端对象模型,获取所有的SPListItem集合,通过WebClient对象,把所有早于归档日期的文档下载下来,然后Item.Delete()掉已经下载了的文档,当然,只是为了完成归档的任务,没有太丰富的功能。

      如果不删除文档库的文档,也可以使用它来下载文档库的文档,感觉比在Windows资源管理器里打开,进行复制粘贴的速度要快一些。

    三、 部分代码:

      批量删除部分的代码,没有通过Caml语句筛选,可能有些很X很暴力,还请见谅,需要的话,可以优化。

    SPList list = web.Lists[ListID];

    SPListItemCollection itemcoll = list.Items;

    string strURL = string.Empty;

    int maxNum = itemcoll.Count;

    progressBarBackUp.Maximum = maxNum;

    for (int i = maxNum - 1; i >= 0; i--)

    {

    try

    {

    if (Convert.ToDateTime(itemcoll[i]["Created"].ToString()) > Convert.ToDateTime(dateTimePicker1.Text))//可以优化~~~~~~~~~

    {

    continue;

    }

    strURL = web.Url + "/" + itemcoll[i].Url;

    BackUpDoc(strURL);

    if (cbAutoDel.Checked)

    {

    itemcoll[i].Delete();

    //itemcoll[i].Update();

    }

    }

    catch

    {

    }

    progressBarBackUp.Value ++;

    }

      如下,下载文档的方法,通过URL下载文档到指定路径;

    Ø public void BackUpDoc(string url)

    Ø {

    Ø try

    Ø {

    Ø string strFileName = string.Empty;

    Ø int l1 = url.LastIndexOf('/');

    Ø strFileName = "/" + url.Substring(l1, url.Length - l1);

    Ø NetworkCredential nc = new NetworkCredential(tbUserName.Text, tbPassWord.Text, tbDomain.Text);

    Ø WebClient wc = new WebClient();

    Ø wc.Credentials = nc;

    Ø byte[] file = wc.DownloadData(url);

    Ø File.WriteAllBytes(tbSavePath.Text + strFileName, file);

    Ø }

    Ø catch

    Ø {

    Ø }

    Ø }

    四、 功能演示

      首先,我在文档库<知识积累>里面,批量上传一些文档,因为是测试,都是一些比较乱七八糟的文档,莫见怪~~~O(∩_∩)O~

    clip_image002

      然后,打开工具,输入用户名、密码、域名;输入网站地址,打开网站;选择站点,选择文档库;选择时间,点击归档,运行如下图:

    clip_image003

      如下图,都已经下载到桌面上的ls文件夹中了

    clip_image004

      查看原来的文档库,刷新看一下,如下图:

    clip_image005

      查看回收站,也没有我们删除的文档,如下图:

    clip_image006

      工具下载地址:http://files.cnblogs.com/jianyus/DocLibBackUpTool.rar

      后记:随便写一个练手的工具,有兴趣的可以看看,大神勿喷~~最近有点怕怕了,都不敢写东西了,其实,本意就是分享~~有交流的可以留言,或者加入我的SharePoint QQ群,大家一起交流~~

    欢迎光临我的淘宝店,天天想你红枣,您的健康,‘枣‘的承诺 <a href="http://shop109102900.taobao.com" target="_blank">天天想你红枣淘宝店</a>

  • 相关阅读:
    matplotlib 进阶之origin and extent in imshow
    Momentum and NAG
    matplotlib 进阶之Tight Layout guide
    matplotlib 进阶之Constrained Layout Guide
    matplotlib 进阶之Customizing Figure Layouts Using GridSpec and Other Functions
    matplotlb 进阶之Styling with cycler
    matplotlib 进阶之Legend guide
    Django Admin Cookbook-10如何启用对计算字段的过滤
    Django Admin Cookbook-9如何启用对计算字段的排序
    Django Admin Cookbook-8如何在Django admin中优化查询
  • 原文地址:https://www.cnblogs.com/TNSSTAR/p/3602878.html
Copyright © 2011-2022 走看看