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);
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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();
        }
示例#5
0
        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");
        }
示例#7
0
        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();
        }
示例#8
0
        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();
            }
        }