SPAttachmentCollection的使用

在SharePoint的列表中,每个列表条目可以拥有0到多个附件文件(附件功能可以在列表常规设置中开启或关闭),在对象模型中,访问这些附件,则可以使用对象模型中的SPAttachmentCollection类来完成。

使用SPAttachmentCollection.Count属性可以得到该列表条目中附件的个数,使用以下方法,则可以获得每一个附件所在的地址。

·      attachments[int index]:通过下标得到附件的文件名,这些附件实际上也是保存在SharePoint的文件系统中的,它们的url为:“List/Attachments/ItemID/FileName”,自然地,SPAttachmentCollection的对象模型中也提供了这样一个属性来访问这一串地址:

·      UrlPrefix:附件文件的前缀url地址(绝对url)。

附件的添加和删除,和添加、删除文件的方法是一样的。

·      Add(string filename, byte[] data):第一个参数指定文件名,第二个参数指定附件内容的字节流。该文件已经存在的时候,也会返回一个异常。

·      Delete(string filename):根据文件名删除该附件。

与添加、删除文件不同的是,因为附件操作是包含在列表条目的修改之中,所以使用Add方法和Delete方法必须调用SPListItem.Update方法才能使修改生效。为了更直接的对附件进行操作,免除Update这一麻烦,SPAttachmentCollection类中提供了AddNowDeleteNow两个方法,它们的参数和使用与AddDelete方法一致,只是调用完之后立刻生效,而不再需要进行Update

在一个列表条目生成之前,SPListItem中的一切属性都是不可用的,所以在对附件进行操作的时候尤其要进行注意,只能对已有的列表条目进行附件的操作。在添加一个新的列表条目的时候,也必须先执行SPListItem.Update,使之成为已有的列表条目,然后才能进行附件操作。

【示例9-9】 该示例读取DemoList列表第一个列表条目的附件,并将它们保存到本地:

// 首先获取到SPWeb对象web

SPList list = web.Lists["DemoList"];

SPListItem item = list.Items[0];

SPAttachmentCollection attach = item.Attachments;

for(int i=0; i<attach.Count; i++)

{

    String url = attach.UrlPrefix + attach[i];

    Console.WriteLine("正在下载{0}...", url);

    SPFile file = web.GetFile(url);

    FileStream fs = new FileStream(file.Name, FileMode.Create);

    byte[] content = file.OpenBinary();

    fs.Write(content, 0, content.Length);

    fs.Close();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值