【问题标题】:Sharepoint 2010 API upload a file with metadata creating a new version from ASP.NET web applicationSharepoint 2010 API 上传带有元数据的文件,从 ASP.NET Web 应用程序创建新版本
【发布时间】:2013-11-22 11:09:47
【问题描述】:

如何将包含元数据的文件从 ASP.NET Web 应用程序创建新版本上传到 SharePoint 2010?

有什么办法吗?

提前致谢。

【问题讨论】:

标签: asp.net web-services api sharepoint document


【解决方案1】:

有多种方法可以将文件上传到文档库。

也许最简单的方法是使用 File.Copy 将文件复制到文档库的 URL。 SharePoint 支持 WebDAV,因此您可以将库视为网络文件夹、直接从任何应用程序打开/保存文件、从 Windows 资源管理器复制和重命名等。

您确实面临一些限制:

  • 文件的完整路径不能超过 260 个字符,SharePoint 将截断它而不发出警告。
  • 文件名不能包含某些对 Windows 资源管理器有效的字符,例如 #
  • 如果您尝试保存与现有文件同名的文件,SharePoint 将创建一个名称稍有不同的新文件,而无需询问
  • 您无法控制authorcreation date 属性。 SharePoint 将使用当前日期和执行代码的用户的凭据。
  • 尽管您可以在上传后更新文件的 ListItem 属性,但您无法设置任何元数据。

另一种选择是使用客户端对象模型并使用File.SaveBinaryDirect 上传文件。此选项比简单地复制文件要好,因为它允许您覆盖现有文件,但您仍然无法直接访问文件的属性。上传可以像这样简单:

var clientContext = new ClientContext("http://intranet.contoso.com");
    using (var fileStream =new FileStream("NewDocument.docx", FileMode.Open))
        ClientOM.File.SaveBinaryDirect(clientContext,
            "/Shared Documents/NewDocument.docx", fileStream, true);

另一种选择是使用客户端对象模型连接到库,然后使用FileCollection.Add 创建文件,例如

Microsoft.SharePoint.Client.File uploadFile = documentsList.RootFolder.Files.Add(
fileCreationInformation);

检查这个 SO 问题,Upload a document to a SharePoint list from Client Side Object Model,了解如何同时使用 SaveBinaryDirect 和 FileCollection.Add。答案显示如何上传文件以及如何修改其属性

【讨论】:

    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    相关资源
    最近更新 更多