Пользовательский приемник событий — скопировать в папку

#events #sharepoint-2010 #event-handling

#Мероприятия #sharepoint-2010 #обработка событий

Вопрос:

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

  1. Документ добавлен в библиотеку

  2. На основе метаданных документа мы проверяем, существует ли папка в другой библиотеке документов.

  3. Если папка не существует, она создается.

  4. Недавно добавленный документ копируется в папку, находящуюся в другой библиотеке документов.

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

Вот мой код на данный момент:

 SPFile sourceFile = properties.ListItem.File;
SPFile destFile; // Copy file from source library to destination         
using (Stream stream = sourceFile.OpenBinaryStream())
{
    var destLib = (SPDocumentLibrary) properties.ListItem.Web.Lists[listName];
    destFile = destLib.RootFolder.Files.Add(sourceFile.Name, stream);
    stream.Close();
} 
// Update item properties         
SPListItem destItem = destFile.Item;
SPListItem sourceItem = sourceFile.Item;
// Copy meta data
destItem["Title"] = sourceItem["Title"];
//...        
//... destItem["FieldX"] = sourceItem["FieldX"];        
//...         
destItem.UpdateOverwriteVersion();
  

Ответ №1:

Ответ

 //Ensure folder here 

var destFolder = destLib.RootFolder.SubFolders["name"]; 

destFile = destFolder.Files.Add(sourceFile.Name, stream);