使用C#以编程方式远程上载Sharepoint

时间:2011-03-03 13:46:06

标签: c# sharepoint upload

是否可以使用Windows应用程序(C#)远程上传文件到Sharepoint服务器?

谢谢。

4 个答案:

答案 0 :(得分:2)

是的,尽管您可能需要“远程”计算机上的某些SharePoint程序集才能实现您的需求。

Uploading files using Client Object Model in SharePoint 2010是Sha​​rePoint 2010的一个很好的起点。

答案 1 :(得分:1)

如果您使用的是2007版(WSS 3.0),可以在此链接上找到上传文件的不同方法的精彩摘要:http://vspug.com/smc750/2009/05/19/uploading-content-into-sharepoint-let-me-count-the-ways/

如果您的服务器场是32位,则必须非常小心,在这种情况下,如果要并行上载大文件或多个文件,则很容易耗尽w3wp.exe进程中的所有可用内存,尤其是农场很繁忙。在这种情况下,您可能希望使用上面链接中描述的RPC接口,因为这是唯一可以在块中上传文件的接口。使用所有其他方式,上传的整个文件必须首先加载到w3wp的内存中,然后才能提交到SharePoint列表项。

对于涉及SharePoint对象模型的方法,您可能希望编写自己的Web服务外观,以使没有SharePoint dll的客户端能够上载文件(如果需要,可以使用+元数据)。

答案 2 :(得分:1)

您可以在sp2010中使用客户端对象模型,而不是直接与Web服务通信。

从我上传的个人资料图片应用程序中获取:

http://spc3.codeplex.com/SourceControl/changeset/view/57957#1015709

        using (ClientContext context = new ClientContext(siteurl)) {
            context.AuthenticationMode = ClientAuthenticationMode.Default;
            List list = context.Web.Lists.GetByTitle(listname);
            context.Load(list);
            context.Load(list.RootFolder);
            context.ExecuteQuery();
            string url = siteurl.CombineUrl(list.RootFolder.ServerRelativeUrl).CombineUrl(listfolder).CombineUrl(name);
            FileCreationInformation fci = new FileCreationInformation();
            fci.Content = data;
            fci.Overwrite = true;
            fci.Url = url;
            Microsoft.SharePoint.Client.File file = list.RootFolder.Files.Add(fci);
            context.ExecuteQuery();
        }

答案 3 :(得分:0)

我在Visual Studio中编写了一个名为SharePoint.DesignFactory.ContentFiles的可用作NuGet包的工具。使用此工具,您可以管理包含要上载到SharePoint内容数据库的元数据的所有文件。您可以将此用于SharePoint 2007(当前必须在SharePoint计算机本身上工作)或SharePoint 2010和Office 365.在这种情况下,您可以在未安装SharePoint的计算机上工作。有关工具的博文,请参阅http://weblogs.asp.net/soever/archive/tags/SharePoint.DesignFactory.ContentFiles/default.aspx