【发布时间】:2011-07-08 01:55:14
【问题描述】:
是否可以使用 Windows 应用程序 (C#) 将文件远程上传到 Sharepoint Server?
谢谢。
【问题讨论】:
-
您的目标是哪个版本的 SharePoint?
标签: c# sharepoint upload
是否可以使用 Windows 应用程序 (C#) 将文件远程上传到 Sharepoint Server?
谢谢。
【问题讨论】:
标签: c# sharepoint upload
是的,尽管您可能需要“远程”计算机上的一些 SharePoint 程序集才能实现您的需要。
Uploading files using Client Object Model in SharePoint 2010 是 SharePoint 2010 的一个很好的起点。
【讨论】:
如果您使用的是 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 的客户端能够上传文件(如果需要,还可以添加元数据)。
【讨论】:
您可以使用 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();
}
【讨论】:
我在 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。
【讨论】: