Wednesday, August 26, 2015

Download version documents from SharePoint document library

private static void DownloadVersion()
        {
            using (ClientContext clientContext = new ClientContext("siteurl"))
            {

                NetworkCredential credentials = new NetworkCredential("username", "password", "domain");
                clientContext.Credentials = credentials;
                Web web = clientContext.Web;
                clientContext.Load(web);
                clientContext.ExecuteQuery();

                Microsoft.SharePoint.Client.File sourceFile = web.GetFileByServerRelativeUrl(web.ServerRelativeUrl + "/Documents/Test.docx");

                clientContext.Load(sourceFile, item => item.Name);
                clientContext.ExecuteQuery();

                var versions = sourceFile.Versions;
                clientContext.Load(versions);

                var oldVersions = clientContext.LoadQuery(versions.Where(v => v != null));
                clientContext.ExecuteQuery();

                string pathUser = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
                string pathDownload = Path.Combine(pathUser, "Downloads");

                if (oldVersions != null)
                {
                    foreach (Microsoft.SharePoint.Client.FileVersion _version in oldVersions)
                    {
                        clientContext.Load(_version, item => item.VersionLabel);
                        clientContext.ExecuteQuery();

                        if (!Directory.Exists(pathDownload))
                        {
                            Directory.CreateDirectory(pathDownload);
                        }

                        using (var webClient = new System.Net.WebClient())
                        {
                            webClient.Credentials = credentials;
                            string filePath = Path.Combine(pathDownload + "\\", Path.GetFileNameWithoutExtension(sourceFile.Name) + _version.VersionLabel + ".docx");
                            webClient.DownloadFile("siteUrl" + _version.Url, filePath);
                        }
                    }
                }
            }
        }

No comments:

Post a Comment