(四)列表附件

列表的附件也是文件系统的一部分,它依附于普通列表的列表条目之上(文档库没有附件),它的操作在一些地方和文档库中文档的操作非常类似。

 

1、附件的读取

一个列表条目的附件可以使用SPListItem的Attachments属性访问,该属性是SPAttachmentCollection类型。这个类型在SharePoint中是一个比较特殊的类型,其特殊之处在于不存在SPAttachment类型。那么SPAttachmentCollection这个集合中存放的又是什么呢?是附件的文件名。通过使用SPWeb的GetFile方法,可以获取到附件对应的SPFile对象,之后就可以和SPFile对象一样进行读取和修改了。读取的方法可以参考下面的程序:

   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之外的一个关键点在于SPAttachmentCollection的UrlPrefix这个属性。列表的所有附件都保存在列表根目录的Attachments目录中,并按照列表条目的ID划分出子文件夹,通过直接使用UrlPrefix属性,获得某个列表条目所有附件所在文件夹的完整路径。

 

2、附件的添加和删除

附件的添加和删除与文件的上传和删除类似。在添加的时候,使用集合类——即SPAttachmentCollection的Add方法,与上传文件的区别在于,这个Add方法没有其他重载,只能指定附件的文件名和byte[]形式的文件内容,这也就意味着列表条目的附件不适合存放大文件;删除的时候,使用SPAttachmentCollection这个集合类的Delete方法和Recycle方法删除附件。

但是就像列表条目的更新一样,在修改字段值之后,需要调用SPListItem的Update方法才能使修改生效,在使用SPAttachmentCollection的Add、Delete和Recycle方法之后,必须Update一下列表条目,才能使附件的更新生效。为了使对附件的操作更加简便,SPAttachmentCollection提供了三个类似的方法:AddNow、DeleteNow和RecycleNow,使用这三个方法上传或删除附件后,可以直接生效,无需对列表条目进行Update。

最新文章

  1. Microsoft Visual Studio 2013 Update 5 direct download link for full ISO
  2. 使用@Controller注解为什么要配置<mvc:annotation-driven />
  3. nginx二级域名配置
  4. The 5th Zhejiang Provincial Collegiate Programming Contest---ProblemE:Easy Task
  5. sql 理解视图
  6. select/**/*/**/from/**/RegSite
  7. Angular初级入门
  8. 字符串属性 NSMutableAttributedString/NSAttributedString
  9. centos 6.5 安装composer
  10. 如何增强ArcGIS插值图出图效果
  11. Laravel5中Cookie的使用
  12. 关于iphone点击readonly的input虚拟键盘不消失的情况
  13. ios 初体验<UILabel控件>
  14. ActiveMQ进阶学习
  15. [Python Study Notes]psutil模块
  16. selenium2 webdriver 常用的python 函数
  17. [Hive_add_1] Hive 与 MR 的对应关系
  18. Subverion仓库迁移知识点整理
  19. bzoj千题计划303:bzoj4827: [Hnoi2017]礼物
  20. Python3之网络爬虫<0>初级

热门文章

  1. Django的信号机制详解
  2. linux如何手动释放linux内存
  3. mongoDB GUI客户端工具大全
  4. MySQL学习总结(一)下载与安装
  5. GitExtensions工具安装与配置
  6. linux-centos7中lnmp服务器编译安装含systemctl启动service(转)
  7. CentOS 加载/挂载光驱
  8. Atitit.js this错误指向window的解决方案
  9. Atitit.nosql api 标准化 以及nosql数据库的实现模型分类差异
  10. [容器]gcr.io镜像下载