Office 365 Sharepoint Upload Files to Documents Library

主宰稳场 提交于 2019-12-11 00:17:15

问题


I am trying to use the following code to add files to my document library on Sharepoint Office365 using web services.

public void SaveFileToSharePoint(string fileName)
        {
            try
            {
                var copyService = new Copy { Url = "https://mydomain.com/_vti_bin/copy.asmx", Credentials = new NetworkCredential("username", "password", "domain") };

                var destURL = "https://mydomain.com/Shared%20Documents/" + Path.GetFileName(fileName);

                string[] destinationUrl = { destURL };

                CopyResult[] cResultArray;

                var fFiledInfo = new FieldInformation { DisplayName = "Description", Type = FieldType.Text, Value = Path.GetFileName(fileName) };

                FieldInformation[] fFiledInfoArray = {fFiledInfo};

                var copyresult = copyService.CopyIntoItems(destURL, destinationUrl, fFiledInfoArray, File.ReadAllBytes(fileName), out cResultArray);
                var b = copyresult;
            }
            catch (Exception ex)
            {
            }
        }

I receive the error "Object Moved". The URL loads the WSDL in the browser though. If there is a better way to upload and get files from SharePoint on Office365 online I would entertain that as well. Thanks.


回答1:


as the ASMX webservices are deprecated you should check out the "new" rest services of sharepoint. ON MSDN you find information about it

Or you can use the Client object model which would be my favorite way. The following example shows basic usage, to connect to SharePoint online check out the following link

using(ClientContext context = new ClientContext("http://yourURL"))
{
Web web = context.Web;
FileCreationInformation newFile = new FileCreationInformation();
newFile.Content = System.IO.File.ReadAllBytes(@"C:\myfile.txt");
newFile.Url = "file uploaded via client OM.txt";
List docs = web.Lists.GetByTitle("Documents");
Microsoft.SharePoint.Client.File uploadFile = docs.RootFolder.Files.Add(newFile);   
context.ExecuteQuery();
}



回答2:


Using roqz suggestions above, here is the ultimate solution I came up with to place files in the SharePoint 2013 Office 365 document library and to retrieve them by name:

public void SaveFileToSharePoint(string fileName)
{
    using (var context = new ClientContext("https://mydomain.com/"))
    {
        var passWord = new SecureString();
        foreach (var c in "MyPassword") passWord.AppendChar(c);
        context.Credentials = new SharePointOnlineCredentials("me@mydomain.com", passWord);
        var web = context.Web;
        var newFile = new FileCreationInformation {Content = File.ReadAllBytes(fileName), Url = Path.GetFileName(fileName)};
        var docs = web.Lists.GetByTitle("Documents");
        docs.RootFolder.Folders.GetByUrl("Test").Files.Add(newFile);
        context.ExecuteQuery();
    }
}

public void GetFileFromSharePoint(string fileName, string savePath)
{
    using (var context = new ClientContext("https://mydomain.com/"))
    {
        var passWord = new SecureString();
        foreach (var c in "MyPassword") passWord.AppendChar(c);
        context.Credentials = new SharePointOnlineCredentials("me@mydomain.com", passWord);
        var web = context.Web;
        var myFile = web.Lists.GetByTitle("Documents").RootFolder.Folders.GetByUrl("Test").Files.GetByUrl(fileName);
        context.Load(myFile);
        context.ExecuteQuery();

        using (var ffl = Microsoft.SharePoint.Client.File.OpenBinaryDirect(context, myFile.ServerRelativeUrl))
        {
            using (var destFile = File.OpenWrite(savePath + fileName))
            {
                var buffer = new byte[8*1024];
                int len;
                while ((len = ffl.Stream.Read(buffer, 0, buffer.Length)) > 0)
                {
                    destFile.Write(buffer, 0, len);
                }
            }
        }
    }
}


来源:https://stackoverflow.com/questions/19125529/office-365-sharepoint-upload-files-to-documents-library

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!