Загрузите файл из sharepoint с помощью c# в папку загрузки по умолчанию в браузере

#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");
    }