从SharePoint 365下载文件
本文关键字:文件 下载 SharePoint | 更新日期: 2023-09-27 18:03:39
string remoteUri = "http://www.contoso.com/library/homepage/images/";
string fileName = "ms-banner.gif", myStringWebResource = null;
// Create a new WebClient instance.
WebClient myWebClient = new WebClient();
// Concatenate the domain with the Web resource filename.
myStringWebResource = remoteUri + fileName;
Console.WriteLine("Downloading File '"{0}'" from '"{1}'" .......'n'n", fileName, myStringWebResource);
// Download the Web resource and save it into the current filesystem folder.
myWebClient.DownloadFile(myStringWebResource,fileName);
Console.WriteLine("Successfully Downloaded File '"{0}'" from '"{1}'"", fileName, myStringWebResource);
Console.WriteLine("'nDownloaded file saved in the following file system folder:'n't" + Application.StartupPath);
我正在使用来自MSDN网站的代码
但是我遇到了错误:403 forbidden
谁能帮我把这个工作
我也面临着同样的问题,并尝试了Vadim Gremyachev建议的答案。但是,它仍然显示403错误。我添加了两个额外的头来强制基于表单的身份验证,如下所示:
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
client.Headers.Add("User-Agent: Other");
之后它开始工作。完整的代码如下所示:
const string username = "username@tenant.onmicrosoft.com";
const string password = "password";
const string url = "https://tenant.sharepoint.com/";
var securedPassword = new SecureString();
foreach (var c in password.ToCharArray()) securedPassword.AppendChar(c);
var credentials = new SharePointOnlineCredentials(username, securedPassword);
DownloadFile(url,credentials,"/Shared Documents/Report.xslx");
private static void DownloadFile(string webUrl, ICredentials credentials, string fileRelativeUrl)
{
using(var client = new WebClient())
{
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
client.Headers.Add("User-Agent: Other");
client.Credentials = credentials;
client.DownloadFile(webUrl, fileRelativeUrl);
}
}
由于请求未经过身份验证而发生此错误。为了访问Office/SharePoint Online中的资源,您可以利用SharePoint Server 2013客户端组件SDK中的sharepointonlinecredals类(用户凭据流)。
下面的例子演示了如何从SPO下载文件:
const string username = "username@tenant.onmicrosoft.com";
const string password = "password";
const string url = "https://tenant.sharepoint.com/";
var securedPassword = new SecureString();
foreach (var c in password.ToCharArray()) securedPassword.AppendChar(c);
var credentials = new SharePointOnlineCredentials(username, securedPassword);
DownloadFile(url,credentials,"/Shared Documents/Report.xslx");
private static void DownloadFile(string webUrl, ICredentials credentials, string fileRelativeUrl)
{
using(var client = new WebClient())
{
client.Credentials = credentials;
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
client.DownloadFile(webUrl, fileRelativeUrl);
}
}