Как программно переместить (заархивировать) документ из библиотеки документов семейства сайтов в другое семейство сайтов

Мне нужно программно переместить (заархивировать) документ из библиотеки документов семейства сайтов в библиотеку документов другого семейства сайтов в SharePoint 2010, когда для столбца в библиотеке документов установлено определенное значение.

Можно ли написать код для этого сценария в приемнике событий? Есть ли другой способ?

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

Заранее спасибо!




Ответы (2)


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

Взгляните на следующую ссылку, в которой обсуждается копирование файла с одного сайта на другой:

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfilecollection.aspx

В примере используется одно семейство сайтов. Однако, если вы преобразовываете исходный документ в массив байтов, вы всегда можете создать экземпляр целевого семейства сайтов и добавить двоичные данные в библиотеку документов в этом семействе сайтов.

Конечно, операция копирования должна работать в приемнике событий. Однако я не уверен, что произойдет, если вы попытаетесь удалить файл в получателе (могут возникнуть проблемы с параллелизмом). Если удаление не работает, рассмотрите возможность запуска одноразового задания таймера для удаления файла (что могло бы произойти в другом процессе).

person Howard    schedule 16.01.2012

Вы можете попробовать SPExport класс SharePoint, как согласно этой статье Копирование или перемещение элементов SharePoint выглядит так, как будто некоторые из операций, которые мы выполняем в пользовательском интерфейсе SharePoint, используют этот API внутри для выполнения задачи. Также этот подход зависит от того, пытаетесь ли вы сделать это один раз или это будет повторяющийся процесс.

person Kusek    schedule 17.01.2012