Sharepoint REST - 我们可以在上传文件时更新文件元数据吗?

时间:2018-05-15 21:30:31

标签: sharepoint dynamics-crm office365 sharepoint-api

  1. 使用以下端点,我们可以将文件上传到sharepoint: https://domain.example.com/_api/web/GetFolderByServerRelativeUrl( “FolderRelativeUrl”)/文件/添加(URL = “文件”,改写=真)
  2. 使用以下端点,我们可以更新特定文件的元数据: https://domain.example.com/_api/web/GetFileByServerRelativeUrl(URL)/ListItemAllFields
  3. 当我们上传文件时,是否可以更新元数据? 同样在检索时,我们需要随文件一起获取元数据。

    基本上我试图避免两个单独的电话? SharePoint API是否支持此功能?

2 个答案:

答案 0 :(得分:0)

SharePoint无法提供REST API来实现它。

作为一种解决方法,我们可以使用CSOM(C#)来实现它。

public Boolean UploadDocument(String fileName, String filePath, List metaDataList)   
{  
    SP.ClientContext ctx = new SP.ClientContext("http://yoursharepointURL");  
    Web web = ctx.Web;  
    FileCreationInformation newFile = new FileCreationInformation();  
    newFile.Content = System.IO.File.ReadAllBytes(@"C: \TestFile.doc");  
    newFile.Url = "/" + fileName;  
    List docs = web.Lists.GetByTitle(“Shared Documents”);  
    Microsoft.SharePoint.Client.File uploadFile = docs.RootFolder.Files.Add(newFile);  
    context.Load(uploadFile);
    context.ExecuteQuery();
    SPClient.ListItem item = uploadFile.ListItemAllFields;  
    //Set the metadata  
    string docTitle = string.Empty;  
    item["Title"] = docTitle;
    item.Update();  
    context.ExecuteQuery();  
}

如果要从UI使用Ajax调用Web服务,我们可以使用CSOM(C#)创建自定义Web服务,然后使用Ajax使用Web服务。

答案 1 :(得分:0)

这很令人沮丧,但是您可以在一个调用中上传初始版本并设置元数据。但不能上传新版本和设置元数据,而只能作为单独的调用。我正在从具有多个版本的DMS传输文件,Sharepoint中的版本历史记录将不匹配。为了保持一致,我还将初始版本和元数据作为两个调用进行传输。通知客户,并且版本历史记录确定。导入的文件显示为空版本。