如何使用c#控制台在Sharepoint 2010中上传文件
本文关键字:文件 2010 Sharepoint 何使用 控制台 | 更新日期: 2023-09-27 18:20:40
是否有一种方法可以使用c#在Sharepoint 2010中自动上传文件?我们对Sharepoint服务器没有管理控制。我们只需要编写一个程序,将本地文件上传到指定的共享点库。该程序将在我们的服务器上运行,该服务器与sharepoint服务器无关。
通过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");
}
其中Orders
是Documents
库中的文件夹
根据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>