【发布时间】:2021-01-18 03:56:24
【问题描述】:
我正在开发一个工具,可以将文件从本地驱动器上传到在线 SharePoint。
当我尝试通过 SharePoint.Client.File.SaveBinaryDirect() 上传文件时,我收到 401:未授权错误
这是我的代码:
var uploadFilePath = @"C:\TestFiles\testFile.pdf";
var uploadFileRelativePath = "/sites/my-site/MyLibrary/testFile.pdf";
using (var ctx = new AuthenticationManager().GetAppOnlyAuthenticatedContext(site,
ConfigurationManager.AppSettings["ClientId"], ConfigurationManager.AppSettings["ClientSecret"]))
{
using (var fileStream = new FileStream(uploadFilePath, FileMode.Open))
{
File.SaveBinaryDirect(ctx, uploadFileRelativePath, fileStream, true);
}
}
问题是,如果我用以下代码交换 SaveBinaryDirect,它就可以正常工作:
FileCreationInformation newFile = new FileCreationInformation();
newFile.Content = System.IO.File.ReadAllBytes(uploadFilePath);
newFile.Url = "testFile.pdf";
List docs = ctx.Web.Lists.GetByTitle("MyLibrary");
docs.RootFolder.Files.Add(newFile);
ctx.ExecuteQuery();
所以我的工具显然被授权上传文件。它只是不适用于 SaveBinaryDirect。
我仍想使用 SharePoint.Client.File.SaveBinaryDirect 上传文件。它的代码更少,我不必手动获取列表和文件夹。
您知道为什么我会收到 401 错误吗?
【问题讨论】:
标签: c# sharepoint sharepoint-online