【转】3.4SharePoint服务器端对象模型 之 访问文件和文件夹(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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode160】相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后…

【转】4.SharePoint服务器端对象模型 之 使用CAML进行数据查询

(一)概述 在SharePoint的开发应用中,查询是非常常用的一种手段,根据某些筛选、排序条件,获得某个列表或者某一些列表中相应的列表条目的集合。 除去列表上的查询之外,在SharePoint中还大量存在着各种各样…

【LeetCode240、剑指offer04】二维数组中的查找(线性做法)

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例: 现有矩阵 matrix 如下&#x…

【转】4.2SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 2)

(三)使用SPQuery进行列表查询 1、概述 列表查询主要是指在一个指定的列表(或文档库)中按照某些筛选、排序条件进行查询。列表查询主要使用SPQuery对象,以及SPList的GetItems方法,将SPQuery作为参数传递&a…

剑指 Offer 51. 数组中的逆序对(归并排序做法)

在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组&#xff0c;求出这个数组中的逆序对的总数。 示例 1: 输入: [7,5,6,4] 输出: 5 限制&#xff1a; 0 < 数组长度 < 50000 来源&#xff1a;力扣…

【转】4.3SharePoint服务器端对象模型 之 使用CAML进行数据查询(Part 3)

&#xff08;四&#xff09;使用SPSiteDataQuery进行多列表查询 1、概述 前面介绍的列表查询有很多优势&#xff0c;但是它的一个缺点就是一次只能在一个列表中进行查询&#xff0c;在SharePoint中&#xff0c;提供了一个跨网站、跨列表查询的机制。通过使用SPSiteDataQuery对…

【LeetCode1046】最后一块石头的重量(堆heap)

题干&#xff1a; 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出两块 最重的 石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; 如果 x y&#xff0c;那么…

一步步编写操作系统 49 加载内核2

内核文件kernel.bin是elf格式的二进制可执行文件&#xff0c;初始化内核就是根据elf规范将内核文件中的段&#xff08;segment&#xff09;展开到&#xff08;复制到&#xff09;内存中的相应位置。在分页模式下&#xff0c;程序是靠虚拟地址来运行的&#xff0c;无论是内核还是…

【牛客 - NC93】设计LRU缓存结构(模拟)

设计LRU缓存结构_牛客题霸_牛客网 描述 设计LRU(最近最少使用)缓存结构&#xff0c;该结构在构造时确定大小&#xff0c;假设大小为 k &#xff0c;并有如下两个功能 1. set(key, value)&#xff1a;将记录(key, value)插入该结构 2. get(key)&#xff1a;返回key对应的val…

【转】理解SQL Server的安全对象和权限

理解安全对象(Securable) 安全对象&#xff0c;是SQL Server 数据库引擎授权系统控制对其进行访问的资源。通俗点说&#xff0c;就是在SQL Server权限体系下控制的对象&#xff0c;因为所有的对象(从服务器&#xff0c;到表&#xff0c;到视图触发器等)都在SQL Server的权限体系…

【LeetCode 986】 区间列表的交集(区间交集)

给定两个由一些 闭区间 组成的列表&#xff0c;firstList 和 secondList &#xff0c;其中 firstList[i] [starti, endi] 而 secondList[j] [startj, endj] 。每个区间列表都是成对 不相交 的&#xff0c;并且 已经排序 。 返回这 两个区间列表的交集 。 形式上&#xff0c…

【转】SQL Server服务器名称与默认实例名不一致的修复方法

服务器级的urn筛选器无效&#xff1a;筛选器必须为空&#xff0c;或服务器属性必须等于实际的服务器名称 这个问题是出在本地连接还是远程连接上&#xff0c;这个问题可能是由于修改过服务器名称导致的。你可以尝试在本地的服务器和SQL Server上运行以下指令&#xff0c;看看服…

【LeetCode 295】. 数据流的中位数

中位数是有序列表中间的数。如果列表长度是偶数&#xff0c;中位数则是中间两个数的平均值。 例如&#xff0c; [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 3) / 2 2.5 设计一个支持以下两种操作的数据结构&#xff1a; void addNum(int num) - 从数据流中添加一个整数到…

【转】如何从SharePoint Content DB中查询List数据***

SharePoint用来维护基础数据非常方便&#xff0c;只需要建立自定义列表&#xff0c;然后使用InfoPath自定义一下维护界面&#xff0c;就可以实现在线的增删改查&#xff0c;开发效率很高。如果维护的数据需要进行审批&#xff0c;还可以加入工作流功能。使用SharePoint Designe…

【搬石头排序】

据说是2020浪潮笔试 时间限制&#xff1a;C / C 语言 1000 MS&#xff1b;其他语言 3000 MS 内存限制&#xff1a;C / C 语言 131072 KB&#xff1b;其他语言 655360 KB 题目描述&#xff1a; 沙滩按照线型摆放着n个大小不一的球形石头&#xff0c;已知第i个石头的半径为ri&a…

【转】SharePoint Content Database简介

SharePoint作为微软主打的企业Portal平台&#xff0c;功能强大&#xff0c;使用简单&#xff0c;非常的方便。对于很多关系数据&#xff0c;我们可以使用自定义列表来维护&#xff0c;如果是非关系数据&#xff0c;可以使用文档库来维护。另外还可以在上面进行版本维护&#xf…

【LeetCode 2】两数相加(链表)

给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数都不会以 0 …

软件测试几个概念 --dev sit uat

DEV环境&#xff1a;DEV顾名思义就是develop&#xff0c;即代码开发的环境。 SIT环境&#xff1a;System Integration Test系统集成测试&#xff0c;开发人员自己测试流程是否走通。 UAT环境&#xff1a;User Acceptance Test用户验收测试&#xff0c;由专门的测试人员验证&…

【LeetCode 629】K个逆序对数组

给出两个整数 n 和 k&#xff0c;找出所有包含从 1 到 n 的数字&#xff0c;且恰好拥有 k 个逆序对的不同的数组的个数。 逆序对的定义如下&#xff1a;对于数组的第i个和第 j个元素&#xff0c;如果满i < j且 a[i] > a[j]&#xff0c;则其为一个逆序对&#xff1b;否则…

VSTS TFS 强制删除签出锁定项 解除 锁定

项目组一哥们走的时候以独占方式迁出了文件&#xff0c;现在其他人都无法修改&#xff0c;管理员似乎也无法将文件解除。经过摸索&#xff0c;找到了一种暴力的方法——直接改数据库。虽然暴力&#xff0c;却能实实在在地解决这个问题。 步骤&#xff1a; 1、连接到TFS数据库…