SharePoint 2013 CSOM Загрузить документ и изменить значения столбца - PullRequest
0 голосов
/ 13 февраля 2019

Я хотел бы загрузить документ в библиотеку документов SharePoint 2013 и установить значение для трех столбцов.

Я запускаю следующий код C # из модульного теста в Visual Studio:

using (var ctx = new ClientContext($"{spRoot}/{spPathToFolder}"))
            {
                Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, targetFileUrl, ms, true);

                var uploadedFile = ctx.Web.GetFileByServerRelativeUrl(targetFileUrl);
                var listItem = uploadedFile.ListItemAllFields;
                listItem["Title"] = "title";
                listItem["UPRN"] = "uprn";
                listItem["KeystoneDocType"] = "keystoneDocType";
                listItem.File.CheckIn("Added by BizTalk", CheckinType.MajorCheckIn);
                listItem.Update();
                ctx.ExecuteQuery();
            }

Записываются следующие значения переменных пути:

spRoot=[https://collaboration.xxx.com], spPathToFolder=[sites/HousingICTSolution/Technical]

targetFileUrl=[/sites/HousingICTSolution/Technical/AssetMgmtEfilesDemo/xxxLogo_190213115512.png]

Файл загружен нормально (и я могу просмотреть его, когда нажимаю на ссылку с библиотекой SharePoint), но значения столбцов не заданы,Другая проблема состоит в том, что выполнение строки "ctx.ExecuteQuery ()" вызывает следующее исключение:

        Message "The file AssetMgmtEfilesDemo/xxxLogo_190213115512.png has been modified by i:0#.w|xxx\\adm-tco05544 on 13 Feb 2019 11:59:35 -0000."    string

Я пользователь "adm-tco05544".Кто-нибудь может подсказать, как предотвратить исключение?

1 Ответ

0 голосов
/ 15 февраля 2019

Перед обновлением полей элемента файла сначала проверьте, а затем обновите значение поля списка, наконец, проверьте файл, вот вам рабочий фрагмент для справки:

        ClientContext ctx = new ClientContext("http://sp/sites/dev");
        using (FileStream fs=new FileStream(@"C:\\Test.jpg",FileMode.Open))
        {
            Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, "/sites/dev/MyDocLibraryName/Test.jpg", fs, true);
            var uploadedFile = ctx.Web.GetFileByServerRelativeUrl("/sites/dev/MyDocLibraryName/Test.jpg");
            ctx.Load(uploadedFile);
                ctx.ExecuteQuery();
                if (uploadedFile.CheckOutType==CheckOutType.None)
                {
                    uploadedFile.CheckOut();

                }

                    var listItem = uploadedFile.ListItemAllFields;
                    listItem["Title"] = "title";
                    listItem["UPRN"] = "uprn";
                    listItem["KeystoneDocType"] = "keystoneDocType";

                    listItem.Update();
                    ctx.ExecuteQuery();
                    listItem.File.CheckIn("Added by BizTalk", CheckinType.MajorCheckIn);
                    ctx.ExecuteQuery();




        }

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...