【问题标题】:Remote Upload Sharepoint programatically using C#使用 C# 以编程方式远程上传 Sharepoint
【发布时间】:2024-04-17 18:10:01
【问题描述】:

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

谢谢。

【问题讨论】:

标签: c# sharepoint upload


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您使用的是 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 的客户端能够上传文件(如果需要,还可以添加元数据)。

    【讨论】:

    • 我们需要在远程机器上安装sharepoint吗?
    • 非常感谢罗伯特。这是一个很好的链接。我尝试实现 WebDAV 方法(最简单的方法)并且成功了。我感到困惑的是我们使用 Sharepoint dll 引用的方法。它一直给我一个错误,说它无法加载程序集。我需要在我的机器上安装 sharepoint 吗?
    • 哪些程序集加载失败?通常 WebClient 类不应加载失败,因为它是 .NET 框架的一部分...
    • WebClient 运行良好。是 ssocli.dll 造成了问题
    【解决方案3】:

    您可以使用 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();
            }
    

    【讨论】:

      【解决方案4】:

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

      【讨论】: