【转】3.4SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)
(四)列表附件
列表的附件也是文件系統(tǒng)的一部分,它依附于普通列表的列表?xiàng)l目之上(文檔庫(kù)沒(méi)有附件),它的操作在一些地方和文檔庫(kù)中文檔的操作非常類(lèi)似。
?
1、附件的讀取
一個(gè)列表?xiàng)l目的附件可以使用SPListItem的Attachments屬性訪(fǎng)問(wèn),該屬性是SPAttachmentCollection類(lèi)型。這個(gè)類(lèi)型在SharePoint中是一個(gè)比較特殊的類(lèi)型,其特殊之處在于不存在SPAttachment類(lèi)型。那么SPAttachmentCollection這個(gè)集合中存放的又是什么呢?是附件的文件名。通過(guò)使用SPWeb的GetFile方法,可以獲取到附件對(duì)應(yīng)的SPFile對(duì)象,之后就可以和SPFile對(duì)象一樣進(jìn)行讀取和修改了。讀取的方法可以參考下面的程序:
1: using(SPSite site = new SPSite("http://sp2010/book")) 2: { 3: using(SPWeb web = site.OpenWeb()) 4: { 5: SPListItem item = web.List["Chapters"].Items[0]; 6: string urlPrefix = item.Attachments.UrlPrefix; 7: foreach(string attName in item.Attachments) 8: { 9: SPFile file = web.GetFile(urlPrefix + attName); 10: Console.WriteLine(attName + ":" + file.Length.ToString()); 11: } 12: } 13: }可以看到,這段程序中除了GetFile之外的一個(gè)關(guān)鍵點(diǎn)在于SPAttachmentCollection的UrlPrefix這個(gè)屬性。列表的所有附件都保存在列表根目錄的Attachments目錄中,并按照列表?xiàng)l目的ID劃分出子文件夾,通過(guò)直接使用UrlPrefix屬性,獲得某個(gè)列表?xiàng)l目所有附件所在文件夾的完整路徑。
?
2、附件的添加和刪除
附件的添加和刪除與文件的上傳和刪除類(lèi)似。在添加的時(shí)候,使用集合類(lèi)——即SPAttachmentCollection的Add方法,與上傳文件的區(qū)別在于,這個(gè)Add方法沒(méi)有其他重載,只能指定附件的文件名和byte[]形式的文件內(nèi)容,這也就意味著列表?xiàng)l目的附件不適合存放大文件;刪除的時(shí)候,使用SPAttachmentCollection這個(gè)集合類(lèi)的Delete方法和Recycle方法刪除附件。
但是就像列表?xiàng)l目的更新一樣,在修改字段值之后,需要調(diào)用SPListItem的Update方法才能使修改生效,在使用SPAttachmentCollection的Add、Delete和Recycle方法之后,必須Update一下列表?xiàng)l目,才能使附件的更新生效。為了使對(duì)附件的操作更加簡(jiǎn)便,SPAttachmentCollection提供了三個(gè)類(lèi)似的方法:AddNow、DeleteNow和RecycleNow,使用這三個(gè)方法上傳或刪除附件后,可以直接生效,無(wú)需對(duì)列表?xiàng)l目進(jìn)行Update。
總結(jié)
以上是生活随笔為你收集整理的【转】3.4SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 世界上存在比蓝鲸还大的生物吗?
- 下一篇: 12岁男孩经常熬夜玩手机诱发癫痫!专家提