开发者

Document library folder transfer from one site collection to other

I want to transfer the folder, which is under document library, from one site collection to other site collection开发者_如何学Go. Please help me out!


Open the document library in explorer mode copy it from one location open other library in explorer view paste it over their.


If you need to do it programmatically in a generic way, you could use a function that will write the content of your folder (or entire document library) to the file system and another function to import it back in any other document library.

To export :

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);
      }
  }  

To import :

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);

        }
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜