public static void DeployFileToThemeFolderSite(this Web web, byte[] fileBytes, string fileName, string themeFolderVersion = "15") { // Get the path to the file which we are about to deploy List themesList = web.GetCatalog(123); // get the theme list web.Context.Load(themesList); web.Context.ExecuteQuery(); Folder rootFolder = themesList.RootFolder; FolderCollection rootFolders = rootFolder.Folders; web.Context.Load(rootFolder); web.Context.Load(rootFolders, f => f.Where(folder => folder.Name == themeFolderVersion)); web.Context.ExecuteQuery(); Folder folder15 = rootFolders.FirstOrDefault(); // Use CSOM to upload the file in FileCreationInformation newFile = new FileCreationInformation(); newFile.Content = fileBytes; newFile.Url = UrlUtility.Combine(folder15.ServerRelativeUrl, fileName); newFile.Overwrite = true; Microsoft.SharePoint.Client.File uploadFile = folder15.Files.Add(newFile); web.Context.Load(uploadFile); web.Context.ExecuteQuery(); }
private Folder GetFolderIfExists(List list, string folder) { FolderCollection folders = list.RootFolder.Folders; SPContext.Load(folders, fl => fl.Include(ct => ct.Name).Where(ct => ct.Name == folder)); SPContext.ExecuteQuery(); return(folders.FirstOrDefault()); }
public static void DeployFileToThemeFolderSite(this Web web, byte[] fileBytes, string fileName, string themeFolderVersion = "15") { if (fileBytes == null || fileBytes.Length == 0) { throw new ArgumentNullException("fileBytes"); } if (string.IsNullOrEmpty(fileName)) { throw new ArgumentNullException("fileName"); } if (string.IsNullOrEmpty(themeFolderVersion)) { throw new ArgumentNullException("themeFolderVersion"); } LoggingUtility.Internal.TraceInformation((int)EventId.DeployThemeFile, "Deploying file '{0}' to '{1}' folder '{2}'.", fileName, web.Context.Url, themeFolderVersion); // Get the path to the file which we are about to deploy List themesList = web.GetCatalog((int)ListTemplateType.ThemeCatalog); // get the theme list web.Context.Load(themesList); web.Context.ExecuteQuery(); Folder rootFolder = themesList.RootFolder; FolderCollection rootFolders = rootFolder.Folders; web.Context.Load(rootFolder); web.Context.Load(rootFolders, f => f.Where(folder => folder.Name == themeFolderVersion)); web.Context.ExecuteQuery(); Folder folder15 = rootFolders.FirstOrDefault(); // Use CSOM to upload the file in FileCreationInformation newFile = new FileCreationInformation(); newFile.Content = fileBytes; newFile.Url = UrlUtility.Combine(folder15.ServerRelativeUrl, fileName); newFile.Overwrite = true; Microsoft.SharePoint.Client.File uploadFile = folder15.Files.Add(newFile); web.Context.Load(uploadFile); web.Context.ExecuteQuery(); }
public void CleanUp() { Console.WriteLine("BrandingExtensionsTests.CleanUp"); if (System.IO.File.Exists(customColorFilePath)) { System.IO.File.Delete(customColorFilePath); } if (System.IO.File.Exists(customBackgroundFilePath)) { System.IO.File.Delete(customBackgroundFilePath); } using (var context = TestCommon.CreateClientContext()) { var web = context.Web; // Remove composed looks from server List themeGallery = web.GetCatalog((int)ListTemplateType.DesignCatalog); CamlQuery query = new CamlQuery(); string camlString = @" <View> <Query> <Where> <Contains> <FieldRef Name='Name' /> <Value Type='Text'>Test_</Value> </Contains> </Where> </Query> </View>"; query.ViewXml = camlString; var found = themeGallery.GetItems(query); web.Context.Load(found); web.Context.ExecuteQueryRetry(); Console.WriteLine("{0} matching looks found to delete", found.Count); var looksToDelete = found.ToList(); foreach (var item in looksToDelete) { Console.WriteLine("Delete look item '{0}'", item["Name"]); item.DeleteObject(); context.ExecuteQueryRetry(); } // Remove Theme Files List themesList = web.GetCatalog((int)ListTemplateType.ThemeCatalog); Folder rootFolder = themesList.RootFolder; FolderCollection rootFolders = rootFolder.Folders; web.Context.Load(rootFolder); web.Context.Load(rootFolders, f => f.Where(folder => folder.Name == "15")); web.Context.ExecuteQueryRetry(); Folder folder15 = rootFolders.FirstOrDefault(); try { Microsoft.SharePoint.Client.File customColorFile = folder15.Files.GetByUrl("custom.spcolor"); customColorFile.DeleteObject(); context.ExecuteQueryRetry(); } catch (Exception ex) { Console.WriteLine("Exception cleaning up: {0}", ex); } try { Microsoft.SharePoint.Client.File customBackgroundFile = folder15.Files.GetByUrl("custombg.jpg"); customBackgroundFile.DeleteObject(); context.ExecuteQueryRetry(); } catch (Exception ex) { Console.WriteLine("Exception cleaning up: {0}", ex); } // Remove webs var webCollection1 = web.Webs; context.Load(webCollection1, wc => wc.Include(w => w.Title, w => w.ServerRelativeUrl)); context.ExecuteQueryRetry(); var websToDelete = new List <Web>(); foreach (var web1 in webCollection1) { if (web1.Title.StartsWith("Test_")) { var webCollection2 = web1.Webs; context.Load(webCollection2, wc => wc.Include(w => w.Title, w => w.ServerRelativeUrl)); context.ExecuteQueryRetry(); var childrenToDelete = new List <Web>(webCollection2); foreach (var web2 in childrenToDelete) { Console.WriteLine("Deleting site {0}", web2.ServerRelativeUrl); web2.DeleteObject(); context.ExecuteQueryRetry(); } websToDelete.Add(web1); } } foreach (var web1 in websToDelete) { Console.WriteLine("Deleting site {0}", web1.ServerRelativeUrl); web1.DeleteObject(); try { context.ExecuteQueryRetry(); } catch (Exception ex) { Console.WriteLine("Exception cleaning up: {0}", ex); } } // Remove pagelayouts List masterPageGallery = context.Web.GetCatalog((int)ListTemplateType.MasterPageCatalog); Folder rootFolderInMasterPageGallery = masterPageGallery.RootFolder; context.Load(rootFolderInMasterPageGallery, f => f.ServerRelativeUrl); context.ExecuteQueryRetry(); try { var fileServerRelativeUrl = UrlUtility.Combine(rootFolderInMasterPageGallery.ServerRelativeUrl, publishingPageWithoutExtension); var file = context.Web.GetFileByServerRelativeUrl(String.Format("{0}.aspx", fileServerRelativeUrl)); context.Load(file); context.ExecuteQueryRetry(); file.DeleteObject(); context.ExecuteQueryRetry(); fileServerRelativeUrl = UrlUtility.Combine(rootFolderInMasterPageGallery.ServerRelativeUrl, "test/test", publishingPageWithoutExtension); file = context.Web.GetFileByServerRelativeUrl(String.Format("{0}.aspx", fileServerRelativeUrl)); context.Load(file); context.ExecuteQueryRetry(); file.DeleteObject(); context.ExecuteQueryRetry(); } catch (Exception ex) { Console.WriteLine("Exception cleaning up: {0}", ex); } } Teardown(); }
/// <summary> /// Upload files to SharePoint assets library /// </summary> /// <param name="matterCenterAssetsFolder">Matter Center Assets Folder</param> /// <param name="clientContext">Client Context</param> /// <param name="siteAssets">Site Assets</param> /// <param name="listFolders">List Folders</param> /// <param name="listval">Configuration values from Configuration Excel</param> private static void UploadFilesToFolder(string matterCenterAssetsFolder, ClientContext clientContext, List siteAssets, FolderCollection listFolders, Dictionary<string, string> listval) { try { // Add matter landing folder listFolders.Add(matterCenterAssetsFolder); siteAssets.RootFolder.Update(); siteAssets.Update(); clientContext.Load(listFolders, folders => folders.Include(folderProperty => folderProperty.Name, folderProperty => folderProperty.ServerRelativeUrl).Where(folder => folder.Name == matterCenterAssetsFolder)); clientContext.ExecuteQuery(); Console.WriteLine("\n " + matterCenterAssetsFolder + " folder created..."); string matterCenterAssetsUrl = listFolders.FirstOrDefault().ServerRelativeUrl; string staticContentFolder = ConfigurationManager.AppSettings["StaticContentFolder"]; if (!string.IsNullOrWhiteSpace(matterCenterAssetsUrl)) { string parentDirectory = Convert.ToString(Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName, CultureInfo.InvariantCulture) + "\\" + staticContentFolder + "\\" + matterCenterAssetsFolder; string matterLandingAssetsFolder = ConfigurationManager.AppSettings["MatterLandingAssets"]; string webDashboardAssetsFolder = ConfigurationManager.AppSettings["WebDashboardAssets"]; string commonAssetsFolder = ConfigurationManager.AppSettings["CommonAssets"]; string documentLandingAssetsFolder = ConfigurationManager.AppSettings["DocumentLandingAssets"]; string images = ConfigurationManager.AppSettings["Images"]; string scripts = ConfigurationManager.AppSettings["Scripts"]; string styles = ConfigurationManager.AppSettings["Styles"]; // Create matter landing assets and web dashboard assets folder listFolders.Add(matterCenterAssetsUrl + "/" + matterLandingAssetsFolder); listFolders.Add(matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + images); listFolders.Add(matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + scripts); listFolders.Add(matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + styles); // Add web dashboard folder listFolders.Add(matterCenterAssetsUrl + "/" + webDashboardAssetsFolder); listFolders.Add(matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + images); listFolders.Add(matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + scripts); listFolders.Add(matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + styles); // Add common assets folder listFolders.Add(matterCenterAssetsUrl + "/" + commonAssetsFolder); listFolders.Add(matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + images); listFolders.Add(matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + scripts); listFolders.Add(matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + styles); // Add document landing folder listFolders.Add(matterCenterAssetsUrl + "/" + documentLandingAssetsFolder); listFolders.Add(matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + images); listFolders.Add(matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + scripts); listFolders.Add(matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + styles); siteAssets.Update(); clientContext.ExecuteQuery(); Console.WriteLine("Created matter landing and web dashboard assets folders."); Console.WriteLine(" ------- Starting to upload assets ------- "); // Upload matter landing assets UploadAssets(parentDirectory + "\\" + matterLandingAssetsFolder, "*", matterCenterAssetsUrl + "/" + matterLandingAssetsFolder, clientContext, listval); // Upload web dashboard images UploadAssets(parentDirectory + "\\" + webDashboardAssetsFolder + "\\" + images, "*", matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + images, clientContext, listval); // Upload web dashboard scripts UploadAssets(parentDirectory + "\\" + webDashboardAssetsFolder + "\\" + scripts, "*", matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + scripts, clientContext, listval); // Upload web dashboard styles UploadAssets(parentDirectory + "\\" + webDashboardAssetsFolder + "\\" + styles, "*", matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + styles, clientContext, listval); // Upload matter landing images UploadAssets(parentDirectory + "\\" + matterLandingAssetsFolder + "\\" + images, "*", matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + images, clientContext, listval); // Upload matter landing scripts UploadAssets(parentDirectory + "\\" + matterLandingAssetsFolder + "\\" + scripts, "*", matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + scripts, clientContext, listval); // Upload matter landing styles UploadAssets(parentDirectory + "\\" + matterLandingAssetsFolder + "\\" + styles, "*", matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + styles, clientContext, listval); // Upload common images UploadAssets(parentDirectory + "\\" + commonAssetsFolder + "\\" + images, "*", matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + images, clientContext, listval); // Upload common scripts UploadAssets(parentDirectory + "\\" + commonAssetsFolder + "\\" + scripts, "*", matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + scripts, clientContext, listval); // Upload common styles UploadAssets(parentDirectory + "\\" + commonAssetsFolder + "\\" + styles, "*", matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + styles, clientContext, listval); UploadAssets(parentDirectory + "\\" + documentLandingAssetsFolder + "\\" + scripts, "*", matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + scripts, clientContext, listval); UploadAssets(parentDirectory + "\\" + documentLandingAssetsFolder + "\\" + images, "*", matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + images, clientContext, listval); UploadAssets(parentDirectory + "\\" + documentLandingAssetsFolder + "\\" + styles, "*", matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + styles, clientContext, listval); } else { Console.WriteLine("\n Something went wrong. The matter center assets folder is not created or unable to browse."); } } catch (Exception exception) { ErrorLogger.LogErrorToTextFile(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace); } }
/// <summary> /// Upload files to SharePoint assets library /// </summary> /// <param name="matterCenterAssetsFolder">Matter Center Assets Folder</param> /// <param name="clientContext">Client Context</param> /// <param name="siteAssets">Site Assets</param> /// <param name="listFolders">List Folders</param> /// <param name="listval">Configuration values from Configuration Excel</param> private static void UploadFilesToFolder(string matterCenterAssetsFolder, ClientContext clientContext, List siteAssets, FolderCollection listFolders, Dictionary <string, string> listval) { try { // Add matter landing folder listFolders.Add(matterCenterAssetsFolder); siteAssets.RootFolder.Update(); siteAssets.Update(); clientContext.Load(listFolders, folders => folders.Include(folderProperty => folderProperty.Name, folderProperty => folderProperty.ServerRelativeUrl).Where(folder => folder.Name == matterCenterAssetsFolder)); clientContext.ExecuteQuery(); Console.WriteLine("\n " + matterCenterAssetsFolder + " folder created..."); string matterCenterAssetsUrl = listFolders.FirstOrDefault().ServerRelativeUrl; string staticContentFolder = ConfigurationManager.AppSettings["StaticContentFolder"]; if (!string.IsNullOrWhiteSpace(matterCenterAssetsUrl)) { string parentDirectory = Convert.ToString(Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName, CultureInfo.InvariantCulture) + "\\" + staticContentFolder + "\\" + matterCenterAssetsFolder; string matterLandingAssetsFolder = ConfigurationManager.AppSettings["MatterLandingAssets"]; string webDashboardAssetsFolder = ConfigurationManager.AppSettings["WebDashboardAssets"]; string commonAssetsFolder = ConfigurationManager.AppSettings["CommonAssets"]; string documentLandingAssetsFolder = ConfigurationManager.AppSettings["DocumentLandingAssets"]; string images = ConfigurationManager.AppSettings["Images"]; string scripts = ConfigurationManager.AppSettings["Scripts"]; string styles = ConfigurationManager.AppSettings["Styles"]; // Create matter landing assets and web dashboard assets folder listFolders.Add(matterCenterAssetsUrl + "/" + matterLandingAssetsFolder); listFolders.Add(matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + images); listFolders.Add(matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + scripts); listFolders.Add(matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + styles); // Add web dashboard folder listFolders.Add(matterCenterAssetsUrl + "/" + webDashboardAssetsFolder); listFolders.Add(matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + images); listFolders.Add(matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + scripts); listFolders.Add(matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + styles); // Add common assets folder listFolders.Add(matterCenterAssetsUrl + "/" + commonAssetsFolder); listFolders.Add(matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + images); listFolders.Add(matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + scripts); listFolders.Add(matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + styles); // Add document landing folder listFolders.Add(matterCenterAssetsUrl + "/" + documentLandingAssetsFolder); listFolders.Add(matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + images); listFolders.Add(matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + scripts); listFolders.Add(matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + styles); siteAssets.Update(); clientContext.ExecuteQuery(); Console.WriteLine("Created matter landing and web dashboard assets folders."); Console.WriteLine(" ------- Starting to upload assets ------- "); // Upload matter landing assets UploadAssets(parentDirectory + "\\" + matterLandingAssetsFolder, "*", matterCenterAssetsUrl + "/" + matterLandingAssetsFolder, clientContext, listval); // Upload web dashboard images UploadAssets(parentDirectory + "\\" + webDashboardAssetsFolder + "\\" + images, "*", matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + images, clientContext, listval); // Upload web dashboard scripts UploadAssets(parentDirectory + "\\" + webDashboardAssetsFolder + "\\" + scripts, "*", matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + scripts, clientContext, listval); // Upload web dashboard styles UploadAssets(parentDirectory + "\\" + webDashboardAssetsFolder + "\\" + styles, "*", matterCenterAssetsUrl + "/" + webDashboardAssetsFolder + "/" + styles, clientContext, listval); // Upload matter landing images UploadAssets(parentDirectory + "\\" + matterLandingAssetsFolder + "\\" + images, "*", matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + images, clientContext, listval); // Upload matter landing scripts UploadAssets(parentDirectory + "\\" + matterLandingAssetsFolder + "\\" + scripts, "*", matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + scripts, clientContext, listval); // Upload matter landing styles UploadAssets(parentDirectory + "\\" + matterLandingAssetsFolder + "\\" + styles, "*", matterCenterAssetsUrl + "/" + matterLandingAssetsFolder + "/" + styles, clientContext, listval); // Upload common images UploadAssets(parentDirectory + "\\" + commonAssetsFolder + "\\" + images, "*", matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + images, clientContext, listval); // Upload common scripts UploadAssets(parentDirectory + "\\" + commonAssetsFolder + "\\" + scripts, "*", matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + scripts, clientContext, listval); // Upload common styles UploadAssets(parentDirectory + "\\" + commonAssetsFolder + "\\" + styles, "*", matterCenterAssetsUrl + "/" + commonAssetsFolder + "/" + styles, clientContext, listval); UploadAssets(parentDirectory + "\\" + documentLandingAssetsFolder + "\\" + scripts, "*", matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + scripts, clientContext, listval); UploadAssets(parentDirectory + "\\" + documentLandingAssetsFolder + "\\" + images, "*", matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + images, clientContext, listval); UploadAssets(parentDirectory + "\\" + documentLandingAssetsFolder + "\\" + styles, "*", matterCenterAssetsUrl + "/" + documentLandingAssetsFolder + "/" + styles, clientContext, listval); } else { Console.WriteLine("\n Something went wrong. The matter center assets folder is not created or unable to browse."); } } catch (Exception exception) { ErrorLogger.LogErrorToTextFile(errorFilePath, "Message: " + exception.Message + "\nStacktrace: " + exception.StackTrace); } }
public FileUploadResult UploadFile(Stream file, string filename, string mimeType, string folderName) { // TODO: Consider updating this to use PnP Core when it supports .NET Standard (https://github.com/pnp/PnP-Sites-Core) Uri site = new Uri(_options.SiteUrl); const int fileChunkSizeInMB = 3; Microsoft.SharePoint.Client.File uploadFile = null; using (var authenticationManager = new AuthenticationManager(_options.TenantId)) { using (var ctx = authenticationManager.GetContext(site, _options.ClientId, _options.ClientSecret)) { // https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/upload-large-files-sample-app-for-sharepoint // Each sliced upload requires a unique id Guid uploadId = Guid.NewGuid(); // TODO: Library name would be dynamic, based on type of amendment (dependent on amendment data model) List uploadLibrary = ctx.Web.Lists.GetByTitle("Amendment"); // create dedicated folder if one has not already been created for this amendment // TODO: Re-work interface so that folder is created ahead of uploading first file, then this // check can be removed. FolderCollection folders = uploadLibrary.RootFolder.Folders; ctx.Load(folders); ctx.ExecuteQuery(); folderName = folderName.Trim(); var targetFolder = folders.FirstOrDefault(x => x.Name == folderName); if (targetFolder == null) { // create folder targetFolder = folders.Add(folderName); ctx.Load(targetFolder); ctx.ExecuteQuery(); } // Calculate block size in bytes int blockSize = fileChunkSizeInMB * 1024 * 1024; // Get the size of the file long fileSize = file.Length; if (fileSize <= blockSize) { // Use regular approach FileCreationInformation fileInfo = new FileCreationInformation(); fileInfo.ContentStream = file; fileInfo.Url = filename; fileInfo.Overwrite = true; uploadFile = targetFolder.Files.Add(fileInfo); ctx.Load(uploadFile); ctx.ExecuteQuery(); } else { // Use large file upload approach ClientResult <long> bytesUploaded = null; using (BinaryReader br = new BinaryReader(file)) { byte[] buffer = new byte[blockSize]; long fileoffset = 0; long totalBytesRead = 0; int bytesRead; bool first = true; // Read data from filesystem in blocks while ((bytesRead = br.Read(buffer, 0, buffer.Length)) > 0) { totalBytesRead = totalBytesRead + bytesRead; if (first) { using (MemoryStream contentStream = new MemoryStream()) { // Add an empty file. FileCreationInformation fileInfo = new FileCreationInformation(); fileInfo.ContentStream = contentStream; fileInfo.Url = filename; fileInfo.Overwrite = true; uploadFile = targetFolder.Files.Add(fileInfo); // Start upload by uploading the first slice. using (MemoryStream s = new MemoryStream(buffer)) { // Call the start upload method on the first slice bytesUploaded = uploadFile.StartUpload(uploadId, s); ctx.ExecuteQuery(); // fileoffset is the pointer where the next slice will be added fileoffset = bytesUploaded.Value; } // we can only start the upload once first = false; } } else { // Get a reference to our file uploadFile = ctx.Web.GetFileByServerRelativeUrl( targetFolder.ServerRelativeUrl + System.IO.Path.AltDirectorySeparatorChar + filename); if (totalBytesRead == fileSize) { // We've reached the end of the file using (MemoryStream s = new MemoryStream(buffer, 0, bytesRead)) { // End sliced upload by calling FinishUpload uploadFile = uploadFile.FinishUpload(uploadId, fileoffset, s); ctx.ExecuteQuery(); break; } } else { using (MemoryStream s = new MemoryStream(buffer)) { // Continue sliced upload bytesUploaded = uploadFile.ContinueUpload(uploadId, fileoffset, s); ctx.ExecuteQuery(); // update fileoffset for the next slice fileoffset = bytesUploaded.Value; } } } } } } } } return(new FileUploadResult { FileId = uploadFile.UniqueId, FileName = filename, FileSizeInBytes = uploadFile.Length, FolderName = folderName }); }