Перенос папки библиотеки документов из одного семейства сайтов в другое - PullRequest
1 голос
/ 21 декабря 2010

Я хочу перенести папку, находящуюся в библиотеке документов, из одного семейства сайтов в другое семейство сайтов. Пожалуйста, помогите мне!

Ответы [ 2 ]

1 голос
/ 21 декабря 2010

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

Для экспорта:

void ExtractFolder(SPFolder spFolder, String systemFolder)
{
     String destinationFolder = Path.Combine(systemFolder, spFolder.Name);

     Directory.CreateDirectory(destinationFolder);

     foreach (SPFile file in spFolder.Files)
     {
         String fileLocation = Path.Combine(destinationFolder, file.Name);
         byte[] binaryFile = file.OpenBinary();

         using (FileStream fs = new FileStream(fileLocation, FileMode.OpenOrCreate, FileAccess.Write))
          {
                    fs.Write(binaryFile, 0, binaryFile.Length);
                    fs.Close();
          }
      }
      foreach (SPFolder subfolder in spFolder.SubFolders)
      {
          ExtractFolder(subfolder, destinationFolder);
      }
  }  

Для импорта:

void ImportListFromFolder(SPFolder spFolder, String systemFolder)
{
    ImportFilesToFolder(spFolder, systemFolder);

    DirectoryInfo directoryInfo = new DirectoryInfo(systemFolder);

    foreach (DirectoryInfo subDirectory in directoryInfo.GetDirectories())
    {
        SPFolder subfolder = spFolder.SubFolders.Add(subDirectory.Name);
        ImportListFromFolder(subfolder, subDirectory.FullName);
    }
}

void ImportFilesToFolder(SPFolder spFolder, string systemFolder)
{
     String fileMask = "*.*";

     DirectoryInfo directoryInfo = new DirectoryInfo(systemFolder);

     foreach (FileInfo fileInfo in directoryInfo.GetFiles(fileMask))
     {
            byte[] buffer = new byte[fileInfo.Length];
            using (FileStream fs = new FileStream(fileInfo.FullName, System.IO.FileMode.Open))
            {
                fs.Read(buffer, 0, (int)fileInfo.Length);
                fs.Close();
            }

            SPFile addedFile = spFolder.Files.Add(fileInfo.Name, buffer, false);

        }
    }
1 голос
/ 21 декабря 2010

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

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