如何使用c#控制台在Sharepoint 2010中上传文件

本文关键字:文件 2010 Sharepoint 何使用 控制台 | 更新日期: 2023-09-27 18:20:40

是否有一种方法可以使用c#在Sharepoint 2010中自动上传文件?我们对Sharepoint服务器没有管理控制。我们只需要编写一个程序,将本地文件上传到指定的共享点库。该程序将在我们的服务器上运行,该服务器与sharepoint服务器无关。

如何使用c#控制台在Sharepoint 2010中上传文件

通过CSOM将文件上载到SharePoint时,可以考虑以下选项。

先决条件:SharePoint Foundation 2010客户端对象模型可再分发

使用FileCollection.Add方法

FileCollection.Add方法根据提供的文件创建信息将文件添加到集合中

public static void UploadFile(ClientContext context, string uploadFolderUrl, string uploadFilePath)
{
    var fileCreationInfo = new FileCreationInformation
    {
        Content = System.IO.File.ReadAllBytes(uploadFilePath),
        Overwrite = true,
        Url = Path.GetFileName(uploadFilePath)
    };
    var targetFolder = context.Web.GetFolderByServerRelativeUrl(uploadFolderUrl);
    var uploadFile = targetFolder.Files.Add(fileCreationInfo);
    context.Load(uploadFile);
    context.ExecuteQuery();
}

使用

using (var ctx = new ClientContext(webUri))
{
     ctx.Credentials = credentials;
     UploadFile(ctx,"Documents/Orders",@"c:'upload'user guide.docx");
}

其中OrdersDocuments库中的文件夹

根据SharePoint 2010中使用客户端对象模型上传文件:

上面的代码可能会引发(400)Bad Request错误,具体取决于取决于文件大小。

使用File.SaveBinaryDirect方法

File.SaveBinaryDirect方法-将指定的文件上载到SharePoint网站,而不需要ExecuteQuery()方法调用。

public static void UploadFile(ClientContext context, string folderUrl, string uploadFilePath)
{
    using (var fs = new FileStream(uploadFilePath, FileMode.Open))
    {
        var fileName = Path.GetFileName(uploadFilePath);
        var fileUrl = String.Format("{0}/{1}", folderUrl, fileName);
        Microsoft.SharePoint.Client.File.SaveBinaryDirect(context, fileUrl, fs, true);
    }
}

使用

using (var ctx = new ClientContext(webUri))
{
     ctx.Credentials = credentials;
     UploadFile(ctx,"/News/Documents/Orders",@"c:'upload'user guide.docx");
}

其中CCD_ 5是位于网站CCD_ 7上的CCD_。

FolderUrl格式:/<web url>/<list url>/<folder url>