#c# #asp.net-mvc #sharepoint #download
Вопрос:
Я пытаюсь загрузить файл с сайта sharepoint с помощью C#.Я могу загрузить файл с сайта sharepoint, но нам нужно указать место назначения. как мы можем загрузить файл в папку загрузки браузера по умолчанию без указания пути назначения.
var downloadPath = @"D:out";
ClientContext ctx = new ClientContext("https://testsharepoint.sharepoint.com");
SecureString passWord = new SecureString();
foreach (char c in "Password12".ToCharArray()) passWord.AppendChar(c);
ctx.Credentials = new SharePointOnlineCredentials("spuser@ABC.com", passWord);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, "/sites/Test/Test.docx");
var fileName = Path.Combine(downloadPath, Path.GetFileName("/sites/Test/Test.docx"));
using (var fileStream = System.IO.File.Create(fileName))
{
fileInfo.Stream.CopyTo(fileStream);
}
Ответ №1:
Я нашел решение этой проблемы. Вместо копирования потока файлов в путь я возвращаю поток файлов с контроллера.Ниже приведен мой код.
[HttpGet]
public virtual ActionResult Download()
{
ClientContext ctx = new ClientContext("https://ABC.sharepoint.com");
SecureString passWord = new SecureString();
foreach (char c in "Pass@word12".ToCharArray()) passWord.AppendChar(c);
ctx.Credentials = new SharePointOnlineCredentials("abc@gmail12.com", passWord);
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(ctx, "/sites/Test/testdoc.docx");
return File(fileInfo.Stream, "application/octet-stream", "testdoc.docx");
}