前言
最近,在使用Net Core写SharePoint的一些工具,这不写到了下载文件的功能,但是Net Core中有一些方法已经被遗弃了,所以记录一下。
正文
1.我们在Net Framework中,通常会使用下面的方法进行文件下载:
FileInformation fileinfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(context, filepath);
2.但是,OpenBinaryDirect这个方法在Net Core中被弃用了,我们只能换下面的方法了:
string filepath = "/sites/Sample/Shared Documents/Sample.xlsx";
ClientContext context = GetAppCtx();
Web web = context.Site.OpenWeb("Web");
File file = web.GetFileByServerRelativeUrl(filepath);
Microsoft.SharePoint.Client.ClientResult<Stream> mstream = file.OpenBinaryStream();
context.Load(file);
context.ExecuteQuery();
using (System.IO.FileStream localFS = System.IO.File.Open(@"D:\Sample.xlsx", FileMode.OpenOrCreate))
{
mstream.Value.CopyTo(localFS);
}
3.先要下载对应的工具包,如下图:
4.在头部引用PnP Framework的方法,如下:
using AuthenticationManager = PnP.Framework.AuthenticationManager;
5.编写用App Id进行认证的方法,这个方法是通用的,只需要更换siteUrl,appId和appSecret三个参数就可以了:
public static ClientContext GetAppCtx()
{
string siteUrl = "https://linyu.sharepoint.com/sites/Sample";
string appId = "e301b508-1234-5678-815d-1015df612345";
string appSecret = "NpHdv0fWHagI/8ja6kzBf1234abcabepkPRPqipAbt8=";
try
{
AuthenticationManager repositoryAuthenticationManager = new AuthenticationManager();
ClientContext ctx = repositoryAuthenticationManager.GetACSAppOnlyContext(siteUrl, appId, appSecret);
return ctx;
}
catch
{
return null;
}
}
6.我们看一下CSOM在Net Framework和Net Core中的一些区别,如下图: