zoukankan      html  css  js  c++  java
  • 如何通過編程獲取列表項目的附件以及多行文本中的文件內容

    我們都知道在SharePoint的列表中,可以有多種方式附加文件。例如下圖所示,在一個列表項目上,我們添加了多行文本字段,在該字段中,添加了兩個文件,並且我們在整個列表項目上,也添加了兩個附件。

    那麼對於這些文件的編程訪問,是否有比較標準和簡單的方法呢?今天我就整理一下給大家參考參考

    image

    那麼,首先來看一下,如何獲取多行文本中的附件內容呢?

    我們可以先看一下,多行文本裡面的內容是怎麼樣的

    image

    很顯然,這個字段的值一般都是一個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);
                            }
                            
                        }
                    }
                }
            }
        }
    }
    
  • 相关阅读:
    在Windows下生成SSH文件
    git常用命令总结
    小Q的歌单
    在vmware下安装Ubuntu16-04
    hexo-next博客中mathjax显示问题解决
    可乐复制问题
    hexo-next博客添加评论功能
    hexo-next博客添加在线联系功能
    tableau desktop
    tableau desktop
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/2025564.html
Copyright © 2011-2022 走看看