Share via

OpenBinaryStream does not exist SharePoint file download using CSOM C#

g h 716 Reputation points
2020-09-04T02:19:15+00:00

download a file from the SharePoint 2010 on-premise and from SharePoint online site. The code is working fine SharePoint online file and getting the error Method "OpenBinaryStream" does not exist for the SharePoint 2010 on-premise site:

        var web = clientContext.Web;
        clientContext.Load(web, website => website.ServerRelativeUrl);
        clientContext.ExecuteQuery();
        var regex = new Regex(SiteUrl, RegexOptions.IgnoreCase);
        var siteRelavtiveURL = regex.Replace(path, string.Empty);
        var serverRelativeURL = web.ServerRelativeUrl + siteRelavtiveURL;

        var file = web.GetFileByServerRelativeUrl(serverRelativeURL);
        clientContext.Load(file);
        clientContext.ExecuteQuery();
        var stream = file.OpenBinaryStream();
        clientContext.ExecuteQuery();

        using (var memoryStream = new MemoryStream())
        {
            stream.Value.CopyTo(memoryStream);
            return memoryStream.ToArray();
        }
Microsoft 365 and Office | SharePoint Server | Development
0 comments No comments

Answer accepted by question author

  1. ZhengyuGuo 10,591 Reputation points Moderator
    2020-09-04T08:12:12.173+00:00

    Try to use FileInformation class to get the file stream:

                var web = clientContext.Web;
                clientContext.Load(web, website => website.ServerRelativeUrl);
                clientContext.ExecuteQuery();
                var regex = new Regex(SiteUrl, RegexOptions.IgnoreCase);
                var siteRelavtiveURL = regex.Replace(path, string.Empty);
                var serverRelativeURL = web.ServerRelativeUrl + siteRelavtiveURL;
    
                var file = web.GetFileByServerRelativeUrl(serverRelativeURL);
                clientContext.Load(file);
                clientContext.ExecuteQuery();
                FileInformation fileInfo = Microsoft.SharePoint.Client.File.OpenBinaryDirect(clientContext, serverRelativeURL);
    
                using (var memoryStream = new MemoryStream())
                {
                    fileInfo.Stream.CopyTo(memoryStream);
                    return memoryStream.ToArray();
                }
    

    Method “OpenBinaryStream” does not exist reading a file from SharePoint 2010


    If an Answer is helpful, please click "Accept Answer" and upvote it.

    Was this answer helpful?

    1 person found this answer helpful.

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.