爱吃鱼豆腐 2023-04-05 16:12 采纳率: 0%
浏览 90
已结题

C#实现从SharePoint中下载文件

.Net C#脚本实现下载SharePoint文档中General文件夹中的的Excel文件到本地,文件名为SharepointTest.xlsx,文件连接https://sharewinfobi.sharepoint.com/:x:/s/AM1000/ETN_N3UL9thJgRHDPbun0UIBe-TqD_d-TF9kQft9aOKlog?e=b2OllY%E3%80%82

  • 写回答

2条回答 默认 最新

  • 2301_77446891 2023-04-05 16:29
    关注

    该回答引用于ChatGPT:
    这里提供一个使用 Microsoft.SharePoint.Client 库实现从 SharePoint 中下载文件的 C# 代码示例:

    using System;
    using System.IO;
    using Microsoft.SharePoint.Client;
    
    class Program
    {
        static void Main(string[] args)
        {
            string siteUrl = "https://sharewinfobi.sharepoint.com/sites/AM1000";
            string libraryName = "General";
            string fileName = "SharepointTest.xlsx";
            string localFilePath = @"C:\Downloads\" + fileName;
    
            using (var clientContext = new ClientContext(siteUrl))
            {
                // Replace with the actual credentials of a user who has access to the SharePoint site
                var credential = new SharePointOnlineCredentials("username@domain.com", GetSecureString("password"));
                clientContext.Credentials = credential;
    
                var web = clientContext.Web;
                var list = web.Lists.GetByTitle(libraryName);
                var query = CamlQuery.CreateAllItemsQuery();
                query.ViewXml = "<View Scope='RecursiveAll'><Query><Where><Eq><FieldRef Name='FileLeafRef'/><Value Type='Text'>" + fileName + "</Value></Eq></Where></Query></View>";
                
                var items = list.GetItems(query);
                clientContext.Load(items, includes => includes.Include(item => item["FileLeafRef"],item => item.File));
                clientContext.ExecuteQuery();
    
                if (items.Count == 1)
                {
                    var file = items[0].File;
                    clientContext.Load(file);
                    clientContext.ExecuteQuery();
    
                    var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, file.ServerRelativeUrl);
                    using (var fileStream = new FileStream(localFilePath, FileMode.Create))
                    {
                        fileInfo.Stream.CopyTo(fileStream);
                    }
                    Console.WriteLine("File downloaded successfully!");
                }
                else
                {
                    Console.WriteLine("File not found or more than one file with the same name exists.");
                }
            }
        }
    
        public static System.Security.SecureString GetSecureString(string password)
        {
            var securePassword = new System.Security.SecureString();
            foreach (char c in password)
            {
                securePassword.AppendChar(c);
            }
            return securePassword;
        }
    }
    

    在上面的代码中,我们首先指定 SharePoint 网站的 URL、文档库的名称、要下载的文件名以及本地存储的路径。然后,我们使用 SharePointOnlineCredentials 类来设置用户凭据,这里需要用到 SharePoint 网站的用户名和密码。

    接着,我们使用 ClientContext 对象来连接到 SharePoint 网站,并获取指定文档库中的所有项。这个查询使用了 CamlQuery,并被限制为只搜索指定的文件名。如果查询返回一个项目,我们可以打开二进制文件流并将其保存到本地文件中。

    最后,我们在控制台输出成功或者失败的消息。

    注意:在运行此代码之前,确保已经安装 Microsoft.SharePoint.Client 和 Microsoft.SharePoint.Client.Runtime 库。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月5日
  • 创建了问题 4月5日

悬赏问题

  • ¥15 依据报错在原代吗格式的基础上解决问题
  • ¥15 在虚拟机中安装flash code
  • ¥15 单片机stm32f10x编写光敏电阻调节3.3伏大功率灯亮度(光强越大灯越暗,白天正常光强灯不亮,使用ADC,PWM等模块)望各位找一下错误或者提供一个可实现功能的代码
  • ¥20 verilog状态机方法流水灯
  • ¥15 pandas代码实现不了意图
  • ¥15 GD32H7 从存储器到外设SPI传输数据无法重复启用DMA
  • ¥25 LT码在高斯信道下的误码率仿真
  • ¥45 渲染完成之后将物体的材质贴图改变,自动化进行这个操作
  • ¥15 yolov5目标检测并显示目标出现的时间或视频帧
  • ¥15 电视版的优酷可以设置电影连续播放吗?