我正在尝试创建一个允许用户将文件上载到SharePoint Online站点的Web应用程序(带有C#的ASP.NET MVC)。
此代码适用于在线SharePoint,仅当我使用实际的电子邮件和密码时。
using (ClientContext context = new ClientContext(url))
{
var password = new SecureString();
foreach(var c in "password")
{
password.AppendChar(c);
}
context.Credentials = new SharePointOnlineCredentials(email, password);
//code to upload file
}
但我不想将此凭据用于此Web应用程序的所有用户。因此,我一直在对此进行一些研究,并发现了基于声明的身份验证。 https://code.msdn.microsoft.com/Remote-Authentication-in-b7b6f43c#content
我绝对会尝试这一点,但我仍然想知道这是否是实现我想做的唯一方法。 Web应用程序使用Windows身份验证对用户进行身份验证,sharepoint在线站点也是如此。 Sharepoint在线网站是否真的无法从Web应用程序获取凭证?
答案 0 :(得分:0)
我们可以通过REST API获取Access令牌上传文件,这里有一篇文章供您参考: SharePoint Online remote authentication (and Doc upload)
关于如何通过CSOM将文件上传到文档,这是一个供您参考的演示:
/// <summary>
/// upload file to document library
/// </summary>
/// <param name="siteUrl">http://sp/sites/DevSite</param>
/// <param name="filePath">C:\\</param>
/// <param name="fileName">hello2.txt</param>
/// <param name="docLibName">MyDocLib</param>
public static void uploadFile(string siteUrl, string filePath, string fileName, string docLibName)
{
siteUrl = siteUrl.EndsWith("/") ? siteUrl.Substring(0, siteUrl.Length - 1) : siteUrl;
ClientContext context = new ClientContext(siteUrl);
List docLib = context.Web.Lists.GetByTitle(docLibName);
context.Load(docLib);
context.ExecuteQuery();
Byte[] bytes = System.IO.File.ReadAllBytes(filePath + fileName);
FileCreationInformation createFile = new FileCreationInformation();
createFile.Content = bytes;
createFile.Url = siteUrl + "/" + docLibName + "/" + fileName;
createFile.Overwrite = true;
Microsoft.SharePoint.Client.File newFile = docLib.RootFolder.Files.Add(createFile);
newFile.ListItemAllFields.Update();
context.ExecuteQuery();
}