在实际生产中需要将sharepoint上的文件批量同步到网络盘或者其他需要同步的地方,下面我分两种情况来实现的:

      我最近用Excel 的VBA写了一个应用,用户在excel上添加完数据后点击保存,但是只存储在sharepoint上这时希望一个定时任务能够将sharepoint的excel同步到网络盘上。(这是一个文件相对简单,后面的会有批量下载文件的功能实现)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using System.Security;
using System.IO;
using System.Reflection;
using System.Net;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace Dict_Download
{
    class Program
    {
        static void Main(string[] args)
        {

            string webSPOUrl = "sharepoint地址";
            string userName = "账户名";
            string passwordStr = "密码";
            string listName = "同步的文件名";      
            
            //set SharePoint online Certification for password
            SecureString password = FetchPasswordFromConsole(passwordStr);

            try
            {
                using (var context = new ClientContext(webSPOUrl))
                {
                    context.Credentials = new SharePointOnlineCredentials(userName, password);

                    Web oWeb = context.Web;
                    context.Load(oWeb);
                    context.ExecuteQuery();
                    // query document
                    CamlQuery query = new CamlQuery();
                    string camlQuery = @"";
                    query.ViewXml = camlQuery;

                    ListItemCollection itemsCollection = oWeb.Lists.GetByTitle(listName).GetItems(query);
                    context.Load(itemsCollection);
                    context.ExecuteQuery();

                    foreach (Microsoft.SharePoint.Client.ListItem oListItem in itemsCollection)
                    {
                        Microsoft.SharePoint.Client.File file = oListItem.File;
                        context.Load(file);
                        context.ExecuteQuery();

                        if (file != null)
                        {   
                            string fileFinalPath = "网络盘地址" + file.Name; 
                            //string fileFinalPath = "C:\\Test\\" + file.Name;
                            FileInformation fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(context, file.ServerRelativeUrl.ToString());
                            using (FileStream fStreamDownLoad = new FileStream(fileFinalPath, FileMode.Create))
                            {
                                fileInfo.Stream.CopyTo(fStreamDownLoad);
                                Console.WriteLine("导入网络共享盘成功!");
                                Console.WriteLine("请按'Enter'键退出窗口");
                                Console.ReadLine();
                                //System.Environment.Exit(0);
                            }
                        }                      
                    }
                }
            }
            catch (Exception ex)
            {               
                Console.WriteLine("导入网络共享盘失败: " + ex.Message);
                Console.ReadLine();
            }            
        }

        //encryption the password to the SecureSting type for SharePoint Online
        private static SecureString FetchPasswordFromConsole(string password)
        {
            var securePassword = new SecureString();
            //Convert string to secure string  
            foreach (char c in password)
                securePassword.AppendChar(c);
            securePassword.MakeReadOnly();
            return securePassword;
        }        
    }
}

对上面的代码进行说明:

首先你需要下载关于Microsoft.SharePoint.Client的reference(就是依赖包),可以这样下载:

用C#将SharePoint 的文件同步到网络盘

用C#将SharePoint 的文件同步到网络盘

这样依赖包就下载好了.

下面就是设置定时任务来执行就可以了。

参考文章: https://jingyan.baidu.com/article/7082dc1c326fb4e40b89bd71.html 按照步骤就可以了

相关文章:

  • 2021-06-13
  • 2021-09-17
  • 2021-11-20
  • 2022-12-23
  • 2022-12-23
  • 2021-09-06
  • 2022-12-23
猜你喜欢
  • 2022-01-06
  • 2022-12-23
  • 2022-12-23
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
  • 2022-01-30
相关资源
相似解决方案