public IList Write(IList content) { if (!_isBinary) { foreach (string str in content) { _streamWriter.WriteLine(str); } } else { foreach (var obj in content) { if (obj is byte) { _stream.WriteByte((byte)obj); } else if (obj is char) { _stream.WriteByte(Convert.ToByte((char)obj)); } } } _streamWriter.Flush(); _stream.Position = 0; File.SaveBinaryDirect((_file.Context as ClientContext), _file.ServerRelativeUrl, _stream, true); return(content); }
static void Main(string[] args) { if (args.Length < 2 && args.Length != 4) { Console.WriteLine("SPTransferSpeed.Console.exe documentItemUrl sizeInMB [username] [password]"); Console.WriteLine("SPTransferSpeed.Console.exe https://bugfree.sharepoint.com/sites/testweb/testdoclib/testfile 1024 [email protected] password"); return; } var destination = new Uri(args[0]); var sizeInMegabytes = int.Parse(args[1]); string username = null; string password = null; if (args.Length == 4) { username = args[2]; password = args[3]; } var contentLength = sizeInMegabytes * Megabyte; var randomizedContent = new byte[contentLength]; new Random().NextBytes(randomizedContent); using (var ctx = SetupContext(destination, username, password)) { // internally the context uses HttpWebRequest to upload and download files. // Thus, when uploading or downloading large files, we may experience // Unhandled Exception: System.Net.WebException: The operation has timed out // unless we change the default timeout period of 180 seconds. ctx.RequestTimeout = Timeout.Infinite; var uploadTime = Time(() => { using (var ms = new MemoryStream(randomizedContent)) { SPFile.SaveBinaryDirect(ctx, destination.LocalPath, ms, true); } }); var downloadTime = Time(() => { var fileInformation = SPFile.OpenBinaryDirect(ctx, destination.LocalPath); using (var sr = new StreamReader(fileInformation.Stream)) { sr.ReadToEnd(); } }); Console.WriteLine( "{0} MB uploaded in {1:0.0} seconds at {2:0.0} Mbit/s\r\n" + "{0} MB downloaded in {3:0.0} seconds at {4:0.0} Mbit/s", sizeInMegabytes, uploadTime, contentLength / uploadTime * 8 / Megabit, downloadTime, contentLength / downloadTime * 8 / Megabit); } }
static long Write(Uri destination, string username, string password) { var original = DateTime.UtcNow.Ticks; using (var ctx = SetupContext(destination, username, password)) { var bytes = Encoding.ASCII.GetBytes(original.ToString()); using (var ms = new MemoryStream(bytes)) { SPFile.SaveBinaryDirect(ctx, destination.LocalPath, ms, true); } } return(original); }
public static void MoveFile(SPFile file, SPFolder folder, ClientContext ctx, Folder fol, Web spWeb2, string usersString) { var newPath1 = Temp + file.Name; using (var webClient1 = new WebClient()) { webClient1.Credentials = new NetworkCredential(Login, Password, Domain); webClient1.DownloadFile(SWebUrl + folder.ServerRelativeUrl + '/' + file.Name, newPath1); } using (var fs = new FileStream(newPath1, FileMode.OpenOrCreate)) { File.SaveBinaryDirect(ctx, fol.ServerRelativeUrl + "/" + file.Name, fs, true); } var fileUpload1 = spWeb2.GetFileByServerRelativeUrl(fol.ServerRelativeUrl + "/" + file.Name); ctx.Load(fileUpload1); ctx.ExecuteQuery(); //Adding correct metadata to the file var item1 = fileUpload1.ListItemAllFields; ctx.Load(item1); ctx.ExecuteQuery(); var modifiedBy1 = file.ModifiedBy; item1["Modified"] = file.TimeLastModified; //check user if (usersString.ToLower().Contains(modifiedBy1.LoginName.ToLower())) { item1["Editor"] = spWeb2.EnsureUser(modifiedBy1.LoginName); } else { item1["Editor"] = spWeb2.EnsureUser(@"SHAREPOINT\system"); } var num1 = item1["_UIVersionString"].ToString(); double result1; double.TryParse(num1.Replace('.', ','), out result1); result1 = result1 + 0.01; item1["_UIVersionString"] = result1.ToString(); item1.Update(); ctx.ExecuteQuery(); }
public void ClearContent(string path) { WriteVerbose($"SPOProvider::ClearContent (path = ’{path}’)"); var obj = GetFileOrFolder(path); if (obj is Folder) { WriteErrorInternal("Directories have no content", path, ErrorCategory.InvalidOperation); } if (obj is File) { if (ShouldProcess($"Clear content from {GetServerRelativePath(path)}")) { var file = obj as File; File.SaveBinaryDirect(file.Context as ClientContext, file.ServerRelativeUrl, Stream.Null, true); } } }
public string UploadFile(string serverPath, string localPath) { var fileName = string.Empty; if (!string.IsNullOrEmpty(serverPath)) { var extention = GetFileExtention(serverPath); if (!string.IsNullOrEmpty(extention)) { fileName = GetFileName(serverPath); serverPath = Path.GetDirectoryName(serverPath); } } using (var ctx = GetContext()) { using (var fs = new FileStream(localPath, FileMode.Open)) { var localFile = new FileInfo(localPath); var fullPath = GetSharePointRootFolder(serverPath, ctx); var folder = ctx.Web.GetFolderByServerRelativeUrl(fullPath); ctx.Load(folder, f => f.Files.Include(c => c.Name, c => c.ServerRelativeUrl), f => f.ParentFolder.ServerRelativeUrl, f => f.ServerRelativeUrl, f => f.Folders); ctx.ExecuteQuery(); var newfileName = !string.IsNullOrEmpty(fileName) ? fileName : localFile.Name; var fileUrl = string.Format("{0}/{1}", folder.ServerRelativeUrl, newfileName); File.SaveBinaryDirect(ctx, fileUrl, fs, true); } } return("Success"); }
static void Main(string[] args) { var url = "http://sp2016/"; var spourl = "https://integrationsonline.sharepoint.com/sites/training"; var user = "******"; var skiponline = !true; //Using Explicit Credential - use for SPO if (skiponline) { using (var context = new ClientContext(spourl)) { var pwd = SecureStringExtensions.GetConsolePassword(); context.Credentials = new SharePointOnlineCredentials(user, pwd.ToSecureString()); context.Load(context.Web, w => w.Title); context.ExecuteQuery(); Console.WriteLine("Your site title is: " + context.Web.Title); } } //Using Credential Cache - use for SP2013, SP2016 using (var context = new ClientContext(url)) { var credentials = CredentialCache.DefaultNetworkCredentials; context.Credentials = credentials; //Get Web Title context.Load(context.Web, w => w.Title); context.ExecuteQuery(); Console.WriteLine("Your site title is: " + context.Web.Title); //Set Web Description Web web = context.Web; web.Description = "Changed by CSOM"; web.Update(); context.Load(context.Web, w => w.Description); context.ExecuteQuery(); Console.WriteLine("Your site description is: " + context.Web.Description); //Get Lists in Web ListCollection lists = web.Lists; //context.Load(lists); context.Load(lists, l => l.Include(item => item.Title, item => item.Created)); context.ExecuteQuery(); foreach (List list in lists) { Console.WriteLine(list.Title); } //Upload File var sourceFilePath = @"d:\Sample.docx"; var targetUrl = "/Documents"; var targetFileUrl = $"{targetUrl}/{Path.GetFileName(sourceFilePath)}"; using (var fs = new FileStream(sourceFilePath, FileMode.Open)) { File.SaveBinaryDirect(context, targetFileUrl, fs, true); } //Set document properties var uploadedFile = context.Web.GetFileByServerRelativeUrl(targetFileUrl); var listItem = uploadedFile.ListItemAllFields; listItem["Information"] = "Uploaded by CSOM"; listItem.Update(); context.ExecuteQuery(); Console.WriteLine("Upload done"); //Create List - Traditional ListCreationInformation listInfo = new ListCreationInformation { Title = "WithoutPnP", TemplateType = (int)ListTemplateType.GenericList }; List cl = web.Lists.Add(listInfo); cl.Update(); context.ExecuteQuery(); //Create List PnP - PnP var pnpl = context.Web.CreateList(ListTemplateType.GenericList, "WithPnP", false); Console.WriteLine("List created"); } Console.ReadLine(); }
public static void GetFiles(SPFolder folder, SPList spList1, List spList2, Web spWeb2, ClientContext ctx, string usersString) { try { var folderUrl = DFolderPath + folder.ServerRelativeUrl.Replace(SubsiteUrl + SFolderPath, String.Empty); var fol = spWeb2.GetFolderByServerRelativeUrl(folderUrl); ctx.Load(fol); ctx.ExecuteQuery(); foreach (SPFile file in folder.Files) { Console.WriteLine(file.Name); foreach (SPFileVersion version in file.Versions) { var newPath = Temp + file.Name; var webClient = new WebClient(); //using (var webClient = new WebClient()) //{ // try //{ webClient.Credentials = new NetworkCredential(Login, Password, Domain); webClient.DownloadFile(SWeb + '/' + version.Url, newPath); // } // catch // { // webClient.Dispose(); // } //} //var fs = new FileStream(newPath, FileMode.OpenOrCreate); using (var fs = new FileStream(newPath, FileMode.OpenOrCreate)) { //try // { File.SaveBinaryDirect(ctx, fol.ServerRelativeUrl + "/" + file.Name, fs, true); // } // catch{ // fs.Dispose(); //} } var fileUpload = spWeb2.GetFileByServerRelativeUrl(fol.ServerRelativeUrl + "/" + file.Name); ctx.Load(fileUpload); ctx.ExecuteQuery(); //set metadata var item = fileUpload.ListItemAllFields; ctx.Load(item); ctx.ExecuteQuery(); item["Modified"] = version.Created; var createdBy = version.CreatedBy; if (usersString.ToLower().Contains(createdBy.LoginName.ToLower())) { item["Editor"] = spWeb2.EnsureUser(createdBy.LoginName); } else { item["Editor"] = spWeb2.EnsureUser(@"SHAREPOINT\system"); } var num = item["_UIVersionString"].ToString(); double result; double.TryParse(num.Replace('.', ','), out result); result = result + 0.01; item["_UIVersionString"] = result.ToString(); item.Update(); ctx.ExecuteQuery(); } var newPath1 = Temp + file.Name; var webClient1 = new WebClient(); //using (var webClient = new WebClient()) //{ //try //{ webClient1.Credentials = new NetworkCredential(Login, Password, Domain); webClient1.DownloadFile(SWebUrl + folder.ServerRelativeUrl + '/' + file.Name, newPath1); //} //catch // { // webClient1.Dispose(); // } //} //var fs1 = new FileStream(newPath1, FileMode.OpenOrCreate); using (var fs1 = new FileStream(newPath1, FileMode.OpenOrCreate)) { // try // { File.SaveBinaryDirect(ctx, fol.ServerRelativeUrl + "/" + file.Name, fs1, true); //} //catch // { //fs.Dispose(); // } } var fileUpload1 = spWeb2.GetFileByServerRelativeUrl(fol.ServerRelativeUrl + "/" + file.Name); ctx.Load(fileUpload1); ctx.ExecuteQuery(); //Adding correct metadata to the file var item1 = fileUpload1.ListItemAllFields; ctx.Load(item1); ctx.ExecuteQuery(); var modifiedBy1 = file.ModifiedBy; item1["Modified"] = file.TimeLastModified; //check user if (usersString.ToLower().Contains(modifiedBy1.LoginName.ToLower())) { item1["Editor"] = spWeb2.EnsureUser(modifiedBy1.LoginName); } else { item1["Editor"] = spWeb2.EnsureUser(@"SHAREPOINT\system"); } var num1 = item1["_UIVersionString"].ToString(); double result1; double.TryParse(num1.Replace('.', ','), out result1); result1 = result1 + 0.01; item1["_UIVersionString"] = result1.ToString(); item1.Update(); ctx.ExecuteQuery(); } ctx.Load(fol.Files); ctx.ExecuteQuery(); //remove extra versions foreach (var existFile in fol.Files) { ctx.Load(existFile.Versions); ctx.ExecuteQuery(); foreach (var existVersion in existFile.Versions) { if (existVersion.Created > DateTime.Now.AddDays(-1)) { existFile.Versions.DeleteByID(existVersion.ID); } } } //Loop through all subfolders and call the function recursively foreach (SPFolder subFolder in folder.SubFolders) { if (subFolder.Name != "Forms") { var itemCreation = new ListItemCreationInformation(); itemCreation.UnderlyingObjectType = FileSystemObjectType.Folder; itemCreation.LeafName = subFolder.Name; itemCreation.FolderUrl = fol.ServerRelativeUrl; var newFolder = spList2.AddItem(itemCreation); newFolder["Title"] = subFolder.Name; newFolder.Update(); ctx.ExecuteQuery(); GetFiles(subFolder, spList1, spList2, spWeb2, ctx, usersString); } } } catch (Exception e) { Console.WriteLine(e.StackTrace); Console.ReadKey(); } }