如何通過編程獲取列表項目的附件以及多行文本中的文件內容
我們都知道在SharePoint的列表中,可以有多種方式附加文件。例如下圖所示,在一個列表項目上,我們添加了多行文本字段,在該字段中,添加了兩個文件,並且我們在整個列表項目上,也添加了兩個附件。
那麼對於這些文件的編程訪問,是否有比較標準和簡單的方法呢?今天我就整理一下給大家參考參考
那麼,首先來看一下,如何獲取多行文本中的附件內容呢?
我們可以先看一下,多行文本裡面的內容是怎麼樣的
很顯然,這個字段的值一般都是一個DIV,說白了其實是一段HTML的內容
那麼,這樣也就好辦了,通過如下代碼可以很容易獲得文件和文件內容
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml.Linq; using Microsoft.SharePoint; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { using (var site = new SPSite(@"http://chenxizhang-pc")) { using (var web = site.OpenWeb()) { var list = web.Lists["TestList"]; var items = list.GetItems(); foreach (SPListItem item in items)//遍歷所有的Item { var content = item["Test"].ToString();//獲得多行文本字段的值 var element = XElement.Parse(content);//轉換為一個XElement,以便進一步的操作 var links = element.Descendants("a");//獲得內部所有的鏈接 foreach (var link in links) { var fileName = link.Value;//獲得鏈接的文本 var fileUrl = link.Attribute("href").Value;//獲取鏈接的地址 Console.WriteLine("{0} :{1}", fileName, fileUrl); var file = web.GetFile(fileUrl);//獲取文件的引用 var bytes = file.OpenBinary();//獲取文件的內容 var result = Encoding.UTF8.GetString(bytes);//轉換為字符串,我測試的文件是文本文件,所以可以這樣直接轉換 Console.WriteLine(result); } } } } } } }
接下來看一下如何獲取列表項目的附件(注意,這是直接附加到ListItem上面的),這個操作相對更加簡單一些,每個Item都有一個Attachments的屬性集合。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.SharePoint; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { using (var site = new SPSite(@"http://chenxizhang-pc")) { using (var web = site.OpenWeb()) { var list = web.Lists["TestList"]; var items = list.GetItems(); foreach (SPListItem item in items)//遍歷所有的Item { foreach (var att in item.Attachments)//遍歷所有的Attachment { var url=string.Format("{0}{1}",item.Attachments.UrlPrefix,att);//獲得文件路徑 var file = web.GetFile(url);//獲取文件引用 var bytes = file.OpenBinary();//取得文件內容 var content = Encoding.UTF8.GetString(bytes);//轉換為字符串,我的這個文件是文本文件,所以可以直接這樣轉 Console.WriteLine(content); } } } } } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
2009-04-23 利用CodeDom和反射动态编译并执行程序集
2009-04-23 在C#中实现类似Eval这类动态求值的函数【转载】
2009-04-23 行内数据
2009-04-23 SQL Server中的命名管道(named pipe)及其使用
2009-04-23 数组和集合的整理
2009-04-23 ArraySegment 的使用 【转载】