[英]Upload File from URL to Sharepoint
我想從URL上傳文件到Sharepoint Online。 我查看了各種類,發現很不錯的類是WebClient
,我試圖將已上傳到我的應用程序網絡的文件拉WebClient
,然后將該流上載到Sharepoint的目標列表中,但我得到了所有是“ 403禁止”例外。
WebClient wc = new WebClient();
wc.UseDefaultCredentials = true;
wc.Headers.Add("User-Agent:Other");
byte[] response = wc.DownloadData
("www.mysite-12345.sharepoint.com/sites/dev/myapp/lists/doclib/themefile.spfont");
var uploadUrl =
"www.mysite.sharepoint.com/_catalogs/theme/15/themefile.spfont";
wc.UploadData
("www.mysite.sharepoint.com/_catalogs/theme/15/themefile.spfont", "POST", response);
}
如果有人可以給我一些有關我要去哪里的建議或其他上傳文件的方法,我將不勝感激。
我想您不僅需要將文件上傳到SharePoint Online,還需要將文件從一個站點復制到另一個站點,對嗎?
有幾種在SharePoint中下載/上傳文件的方式,您可以使用特定的SharePoint API(例如CSOM)或香草.NET功能(例如HttpClient Class , WebClient Class )來實現此目的,如下所示:
var sourceWebUri = new Uri("https://sourcesite.sharepoint.com");
var targetWebUri = new Uri("https://targetsite.sharepoint.com");
var userName = "username@tenant.onmicrosoft.com";
var password = "password";
using(var sourceClient = GetClient(sourceWebUri,userName,password))
{
var fileContent = sourceClient.DownloadData(sourceWebUri + "/documents/SharePoint User Guide.docx");
using(var targetClient = GetClient(targetWebUri,userName,password))
{
targetClient.UploadData(targetWebUri + "/documents/SharePoint User Guide.docx,"PUT" ,fileContent);
}
}
哪里
private static WebClient GetClient(Uri webUri, string userName, string password)
{
var client = new WebClient();
client.Credentials = GetCredentials(webUri, userName, password);
client.Headers.Add("X-FORMS_BASED_AUTH_ACCEPTED", "f");
return client;
}
private static SharePointOnlineCredentials GetCredentials(Uri webUri, string userName, string password)
{
var securePassword = new SecureString();
foreach (var ch in password) securePassword.AppendChar(ch);
return new SharePointOnlineCredentials(userName, securePassword);
}
SharePoint CSOM API包含File.OpenBinaryDirect方法 (用於從SharePoint下載文件)和File.SaveBinaryDirect方法(用於將文件升級到SharePoint),下面的示例演示如何在站點之間復制文件 :
public static void CopyFile(ClientContext sourceCtx, string sourceFileUrl, ClientContext targetCtx, string targetFileUrl)
{
if (sourceCtx.HasPendingRequest)
sourceCtx.ExecuteQuery();
using (var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(sourceCtx, sourceFileUrl))
{
Microsoft.SharePoint.Client.File.SaveBinaryDirect(targetCtx, targetFileUrl, fileInfo.Stream, true);
}
}
用法
using (var sourceCtx = GetSPOContext(sourceWebUri, userName, password))
{
using (var targetCtx = GetSPOContext(targetWebUri, userName, password))
{
CopyFile(sourceCtx, "/sourcesite/documents/SharePoint User Guide.docx", targetCtx, "/targetsite/documents/SharePoint User Guide.docx");
}
}
哪里
public static ClientContext GetSPOContext(Uri webUri, string userName, string password)
{
var securePassword = new SecureString();
foreach (var ch in password) securePassword.AppendChar(ch);
return new ClientContext(webUri) { Credentials = new SharePointOnlineCredentials(userName, securePassword) };
}
先決條件
SharePointOnlineCredentials類 :
表示一個提供憑據以訪問SharePoint Online資源的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.