Sharepoint REST - Можем ли мы обновить метаданные файла при загрузке самого файла? - PullRequest
0 голосов
/ 16 мая 2018
  1. Используя нижеуказанную конечную точку, мы можем загрузить файл в sharepoint: https://domain.example.com/_api/web/GetFolderByServerRelativeUrl("FolderRelativeUrl")/Files/add(url="File",overwrite=true)
  2. Используя указанную ниже конечную точку, мы можем обновить метаданные для конкретного файла: https://domain.example.com/_api/web/GetFileByServerRelativeUrl(URL)/ListItemAllFields

Можно ли обновить метаданные при загрузке самого файла? И в то же время при получении нам нужно получить метаданные вместе с файлом.

В основном я пытаюсь избежать 2 отдельных вызовов? Поддерживает ли SharePoint API эту функцию?

Ответы [ 2 ]

0 голосов
/ 03 июля 2019

Это расстраивает, но вы можете загрузить исходную версию и установить метаданные за один вызов. Но не загружайте новую версию и не устанавливайте метаданные, только как отдельные вызовы. Я передаю файлы из DMS, которые могут иметь несколько версий, и история версий в Sharepoint не будет совпадать. Для обеспечения согласованности я также передаю исходную версию и метаданные в виде двух вызовов. Клиент проинформирован, и история версий в порядке. Импорт файла отображается как пустая версия.

0 голосов
/ 17 мая 2018

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();  
}

Если вы хотите позвонитьвеб-сервис, используя Ajax из пользовательского интерфейса, мы можем создать пользовательский веб-сервис с CSOM (C #), а затем использовать веб-сервис с помощью Ajax.

...