谁说文档就是你创建的?

在SharePoint的项目中,文档库起着居功至伟的作用。他不但是存放文档的容器,同时提供了:过期,审核,版本控制等强大的功能。当然这篇文章不是阐述这些功能的,而是针对文档库里的文档的一些特殊属性。例如,通过页面的方式上传文档,那么有没有可能上传之后的文档显示的是别人上传的?像是使用代码的方式来制造不在场证明。

答案当然是可以,这里把代码贴出来共享.(不是通过模拟身份实现的)

   1:  SPUser createBy=web.EnsureUser("domain\\account1");
   2:  DateTime created=new DateTime (2010,1,1,12,01,26);
   3:  SPUser modifiedBy = web.EnsureUser("domain\\account2");
   4:  DateTime modified = new DateTime(2010,10,1,10,03,20);
   5:  targetLib.RootFolder.Files.Add(file.Name, fileBins, createBy, modifiedBy, created, modified);
   6:  file.Update();

测试了一下,修改创建人只能在代码上传的过程中起作用,一旦上传到文档库,那么只能悔之晚矣!不过也有折中的办法,就是通过代码删除,然后添加,类似于如下的代码:

   1:  SPDocumentLibrary targetLib = (SPDocumentLibrary)web.Lists["doc lib name"];
   2:  SPFile file = targetLib.RootFolder.Files["file name"];
   3:  byte[] fileBins= file.OpenBinary();
   4:  file.Delete();  

两段代码的顺序应该是先删除而后添加。这里有个很重要的前提:就是该文档和所在文档库没有和其他流程等产生关联,否则Item的Guid发生变化,事情就有点麻烦了。

Note:测试的过程中发现对于创建时间和修改时间的修改,不起作用,还没有找到原因。

posted @ 2010-06-01 19:56  范文轩  阅读(325)  评论(0编辑  收藏  举报