在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:测试的过程中发现对于创建时间和修改时间的修改,不起作用,还没有找到原因。