обновленные атрибуты listitem не вносят изменения в sharepoint - PullRequest
3 голосов
/ 01 июня 2011

Я загружаю документ в sharepoint. Однако я хотел бы указать собственное имя, а не наследовать имя файла, который я загружаю.

Мой код был основан на этом решении: http://www.codeproject.com/Articles/103503/How-to-upload-download-a-document-in-SharePoint-20.aspx

однако это не работает.

Кроме того, я также хотел бы предоставить заголовок файла: поэтому я хотел бы обновить заголовок:

uploadFile.ListItemAllFields.FieldValues["Title"] = "my custom title";

Однако, как только файл завершил свою загрузку..я войдите в систему sharepoint и заметьте, что заголовок не был применен.

как я могу интегрировать загрузку файла и применение нового имени?,

РЕДАКТИРОВАТЬ:

        using (var clientContext = GetNewContext())
        {
            var uploadLocation = string.Format("{0}{1}/{2}", SiteUrl, Helpers.ListNames.RequestedDocuments, Path.GetFileName(document));

            //Get Document List
            var documentslist = clientContext.Web.Lists.GetByTitle(Helpers.ListNames.RequestedDocuments);

            var fileCreationInformation = new FileCreationInformation
            {
                Content = System.IO.File.ReadAllBytes(document), //Assign to content byte[] i.e. documentStream
                Overwrite = true, //Allow owerwrite of document
                Url = uploadLocation //Upload URL,

            };

            var uploadFile = documentslist.RootFolder.Files.Add(fileCreationInformation);

            uploadFile.ListItemAllFields.FieldValues["Title"] = title;

            uploadFile.ListItemAllFields.Update();

            clientContext.ExecuteQuery();           
        }
        site.SubmitChanges(ConflictMode.FailOnFirstConflict, true);

Ответы [ 3 ]

5 голосов
/ 01 июня 2011

Вы пропускаете вызов clientContext.Load после добавления файла в коллекцию Files.См. Эти сообщения в блоге для получения дополнительной информации:

https://www.c -sharpcorner.com / code / 965 / программно-загрузка-документ-использование-клиент-объект-модель-в-sharepoint.aspx

https://zimmergren.net/sp-2010-uploading-files-using-the-client-om-in-sharepoint-2010/

Этот пример кода взят из первого сообщения в блоге, указанного выше:

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();  
}
2 голосов
/ 01 июня 2011

Вы вызываете Update после установки значений поля?

uploadFile.ListItemAllFields.Update();
0 голосов
/ 02 августа 2017

вместо настройки:

uploadFile.ListItemAllFields.FieldValues["Title"] = title;
uploadFile.ListItemAllFields.Update();

установите его следующим образом:

uploadFile.ListItemAllFields["Title"] = title;
uploadFile.ListItemAllFields.Update();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...