Как вы используете метод CopyIntoItems веб-службы копирования SharePoint? - PullRequest
4 голосов
/ 12 июня 2009

Я пытаюсь загрузить файлы документов в библиотеку документов в SharePoint, используя метод CopyIntoItems веб-службы SharePoint Copy.

Приведенный ниже код выполняется и возвращает 0 (успех). Кроме того, массив CopyResult [] возвращает 1 значение с результатом «Success». Однако я нигде не могу найти документ в библиотеке.

У меня два вопроса:

  1. Может кто-нибудь увидеть что-то не так с моим кодом или предложить изменения?
  2. Может кто-нибудь предложить, как я мог бы отладить это на стороне сервера. У меня нет большого опыта работы с SharePoint. Если я смогу отследить, что происходит, с помощью ведения журнала или каким-либо другим способом на стороне сервера, это может помочь мне выяснить, что происходит.

Пример кода:

string[] destinationUrls = { Uri.EscapeDataString("https://someaddress.com/Reports/Temp") };

SPCopyWebService.FieldInformation i1 = new SPCopyWebService.FieldInformation { DisplayName = "Name", InternalName = "Name", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Name" };
SPCopyWebService.FieldInformation i2 = new SPCopyWebService.FieldInformation { DisplayName = "Title", InternalName = "Title", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Title" };

SPCopyWebService.FieldInformation[] info = { i1, i2 };

SPCopyWebService.CopyResult[] result;

byte[] data = File.ReadAllBytes("C:\\SomePath\\Test1Data.txt");

uint ret = SPCopyNew.CopyIntoItems("", destinationUrls, info, data, out result);

Редактировать, чтобы все заработало:

Мой код заработал, добавив "http://null" в поле SourceUrl. Ответ Nat ниже, вероятно, сработает по этой причине. Вот строка, которую я изменил, чтобы заставить ее работать.

// Change
uint ret = SPCopyNew.CopyIntoItems("http://null", destinationUrls, info, data, out result);

Ответы [ 3 ]

6 голосов
/ 16 июня 2009

Я думаю, что проблема может заключаться в попытке установить свойство "Имя" с помощью веб-службы. У меня были некоторые неудачи при этом. Учитывая, что «Имя» - это название документа, вы можете добиться успеха с

    string targetDocName = "Test1Name.txt";
    string destinationUrl = Uri.EscapeDataString("https://someaddress.com/Reports/Temp/" + targetDocName);
    string[] destinationUrls = { destinationUrl };

    SPCopyWebService.FieldInformation i1 = new SPCopyWebService.FieldInformation { DisplayName = "Title", InternalName = "Title", Type = SPListTransferSpike1.SPCopyWebService.FieldType.Text, Value = "Test1Title" };
    SPCopyWebService.FieldInformation[] info = { i1};
    SPCopyWebService.CopyResult[] result;
    byte[] data = File.ReadAllBytes("C:\\SomePath\\Test1Data.txt");
    uint ret = SPCopyNew.CopyIntoItems(destinationUrl, destinationUrls, info, data, out result);

Примечание. Я использовал "target" в качестве свойства "source". Не совсем знаю почему, но это делает трюк .

1 голос
/ 15 октября 2010

Sourceurl используется в Sharepoint. Это ссылка на «Исходный документ». Когда в вашей библиотеке документов, наведите курсор на элемент, справа появляется треугольник, указывающий вниз. Нажав на нее, открывается меню. Нажмите на «Просмотр свойств» вариант. На этой странице вы увидите следующее «Этот элемент является копией http://null (Перейти к исходному элементу | Отменить связь)»

Поскольку мы используем функцию копирования, Sharepoint отслеживает «исходный элемент» как часть функции управления документами.

1 голос
/ 15 июня 2009

Я не очень хорошо понял, что вы пытаетесь сделать, но если вы пытаетесь загрузить файл из локального каталога в библиотеку sharepoint, я бы предложил вам создать веб-клиента и использовать uploadata:

Пример (VB.NET):

dim webclient as Webclient 
webClient.UploadData("http://srvasddress/library/filenameexample.doc", "PUT", filebytes)

Тогда вам просто нужно проверить файл с помощью веб-службы списков, например:

listService.CheckInFile("http://srvasddress/library/filenameexample.doc", "description", "1")

Надеюсь, это помогло.

РЕДАКТИРОВАТЬ: не забудьте установить учетные данные для веб-клиента и т. Д.

РЕДАКТИРОВАТЬ 2: обновить поля метад с помощью этого:

listService.UpdateListItems("Name of the Library, batchquery)

Вы можете найти информацию о создании пакетных запросов здесь: ссылка

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