在实际生产中需要将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(就是依赖包),可以这样下载:
这样依赖包就下载好了.
下面就是设置定时任务来执行就可以了。
参考文章: https://jingyan.baidu.com/article/7082dc1c326fb4e40b89bd71.html 按照步骤就可以了