Sharepoint REST - Можем ли мы обновить метаданные файла при загрузке самого файла?
- Используя указанную ниже конечную точку, мы можем загрузить файл в sharepoint: https://domain.example.com/_api/web/GetFolderByServerRelativeUrl("FolderRelativeUrl") / Files / add (url = "File", overwrite = true)
- Используя указанную ниже конечную точку, мы можем обновить метаданные для определенного файла: https://domain.example.com/_api/web/GetFileByServerRelativeUrl(URL)/ListItemAllFields
Можно ли обновить метаданные при загрузке самого файла? И в то же время при получении нам нужно получить метаданные вместе с файлом.
В основном я пытаюсь избежать 2 отдельных звонков? Поддерживает ли SharePoint API эту функцию?
1 ответ
SharePoint не может предоставить API REST для его достижения.
В качестве обходного пути мы можем использовать 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.
Это неприятно, но вы можете загрузить исходную версию и установить метаданные за один вызов. Но не загружать новую версию и устанавливать метаданные, только как отдельные вызовы. Я передаю файлы из DMS, у которого может быть несколько версий, и история версий в Sharepoint не будет совпадать. Чтобы сделать его согласованным, я также передаю исходную версию и метаданные как два вызова. Клиент проинформирован, и история версий в порядке. Импорт файла отображается как пустая версия.