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