SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)
(四)列表附件
列表的附件也是文件系统的一部分,它依附于普通列表的列表条目之上(文档库没有附件),它的操作在一些地方和文档库中文档的操作非常类似。
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。
SharePoint服务器端对象模型 之 访问文件和文件夹(Part 4)的更多相关文章
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 3)
(三)遍历 文件系统的遍历是指按照文件夹的层级结构遍历文档库.列表的文件夹和列表条目.遍历主要有三种方式:(1)直接使用文件系统对象模型进行遍历:(2)使用SPDocumentLibrary进行遍历: ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 1)
本节中所阐述的内容,主要适用于SharePoint文档库中的文件和文件夹,以及列表中的文件夹.系统中的其他文件(如_layouts中的文件.配置文件.程序文件等)不在本章节的讨论范围之内. (一) ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)
本节将会介绍SharePoint中最为常用的一些对象模型,以及如何使用这些对象模型来访问和操作网站中的数据.几乎所有的SharePoint服务器端开发都会涉及到这些内容,因此应着重掌握本节中所介绍的基 ...
- SharePoint服务器端对象模型 之 访问文件和文件夹(Part 2)
4.添加文件夹 文件夹的创建方法在文档库和普通列表中稍有不同. 在文档库中,与一般的集合操作相同,直接使用SPFolderCollection的Add(string name)方法即可添加文件夹,例如 ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 5)
(五)列表条目(SPListItem) SharePoint中数据的存储基本上都是通过列表条目来完成(文档库中的文档也是一种特殊的列表条目),因此在SharePoint应用开发中,最终是要和列表条目打 ...
- SharePoint服务器端对象模型 之 访问用户、用户组和权限(Part 1)
(一)概述 SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权. 认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,Sh ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 2)
(二)列表(SPList) 列表是SharePoint中最为重要的数据容器,我们一般保存在SharePoint中的所有数据,都是保存在列表中(文档库也是一种列表),因此列表对象在SharePoint的 ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 3)
(三)视图 与传统意义上的数据视图类似,SharePoint中的列表视图指定了列表中数据的筛选条件.排序条件.分组条件.显示栏/字段.显示条目数.显示样式等内容.在SharePoint中,使用SPVi ...
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 4)
(四)栏/字段 SharePoint中的字段(中文版中叫做"栏")与传统的数据栏类似,也有不同类型的区别,不过SharePoint中内置的栏类型除了按照数据类型(如数字.日期和时间 ...
随机推荐
- tcp/ip --- IP路由选择及子网寻址
IP路由选择 当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢? 最特殊的情况是目的主机和主机直连 ...
- 深入理解Tomcat虚拟文件夹
我们知道,Web站点中的内容(包含网页,图片,音频文件等)一般都存放在App的文件夹下.但随着站点内容的不断丰富,用户须要把不同层次的内容组织成站点的子文件夹. 我们通常的做法是在站点主文件夹 ...
- ScrollView嵌套ListView冲突问题的最优解决方式
项目做多了之后.会发现事实上ScrollView嵌套ListVew或者GridView等非经常常使用,可是你也会发现各种奇怪问题产生.依据个人经验如今列出常见问题以及代码最少最简单的解决方法. 问题一 ...
- Intellj IDEA14.0.2启动异常之3分钟修复
今天是周一,刚到公司启动心爱的IDEA,,突然启动到一半,就抛异常了,直接弹窗,报例如以下的异常: java.lang.RuntimeException: com.intellij.ide.plugi ...
- Atitit.java相比c#.net的优点 优缺点 v2 q330
Atitit.java相比c#.net的优点 优缺点 v2 q330 1. 跨平台可在LINUX上,mac跑以外.主要如下: 1 2. IDE ECLIPSE(500m)是绿色的,换机器不用安装,C ...
- Atitit.json类库的设计与实现 ati json lib
Atitit.json类库的设计与实现 ati json lib 1. 目前jsonlib库可能有问题,可能版本冲突,抛出ex1 2. 解决之道:1 2.1. 自定义json解析库,使用多个复合的js ...
- 过滤NSString中的Emoji
有时候由于项目需求.要过滤NSString中的emoji. 比方下面情况: 要跟android互通,android假设还没做这方面的支持. 内容做为手机短信发出去. 思路例如以下,遍历NSString ...
- MVC | 微软自带的Ajax请求
@Ajax.BegForm( ) 用来生成异步表单 Home控制器 using System; using System.Collections.Generic; using System.Linq ...
- OSI与TCP/IP你了解多少?
刚开始接触计算机的时候,非常好奇数据是怎样传输的,通过后期的学习逐步了解了计算机的通信原理.相信很多人在学习计算机的时候,首先入门的第一门课就是计算机的通信原理,而通信原理又离不开两大参考模型:OSI ...
- connect()
#include <sys/types.h> #include <sys/socket.h> int connect(int sockfd, const str ...