あるドキュメントライブラリから別のドキュメントライブラリにファイルをコピーする際に多くのスレッドが表示されますが、完全なドキュメントライブラリをあるサイトから別のサイトに(同じサイトコレクション内で)移動またはコピーしたいと思います。
これは.NETC#コードで可能ですか?
あるドキュメントライブラリから別のドキュメントライブラリにファイルをコピーする際に多くのスレッドが表示されますが、完全なドキュメントライブラリをあるサイトから別のサイトに(同じサイトコレクション内で)移動またはコピーしたいと思います。
これは.NETC#コードで可能ですか?
いいえ、これは不可能です。これは、サードパーティベンダーの専用バックアップソリューションが登場する場所です。
単純なドキュメントライブラリについて話している場合、もちろんそれほど難しくはありません。
SPFolder.Add
次に、ライブラリ内のすべてのドキュメントを繰り返し処理し、次のコマンドを使用する必要があります。
SPFileCollection collFile = collFolder.Files;
foreach(SPFile file in collFile)
destFolder.Files.Add(file.Name, file.OpenBinary());
この場合のcollFolderは、元のドキュメントライブラリです。destFolderは新しいドキュメントライブラリです。を使用して、ドキュメントライブラリをフォルダとして取得できますSPWeb.GetFolder(string doclibname)
。
弊社ではControlPointを使用して、この種のアイテムとリスト/doclibのコピーを作成しています。PowershellやSTSADMで手を汚す必要はもうありません(手を汚したいものは別として)。素晴らしいツールと素晴らしいテクニカルサポートチームもあります。
これを行うには、「コンテンツを含める」フラグを選択してリストをテンプレートとして保存し、宛先サイトのテンプレートから新しいリストを再作成します。
ソースサイトのみに関連するリストをカスタマイズした場合(たとえば、アイテムのワークフローを開始した場合)、この方法でリストをコピーすることはできないことに注意してください。
これをプログラムで行うには、SPListist.SaveAsTemplate()メソッドを使用するだけです。
エクスプローラービューで両方のライブラリを開き、アイテムをコピーします。ただし、これはコードソリューションではなく、メタデータをコピーしません。
ソースオブジェクトとターゲットオブジェクトを開いてSPWeb
、それらの間でアイテムを1つずつコピーしてみてください。この記事を読むことをお勧めします:http:
//blog.mediawhole.com/2007/12/copying-sharepoint-document-library.html。
著者は、同じWebアプリケーションに存在するあるサイトから別のサイトにドキュメントライブラリをコピーする方法を示しています。
サーバーの全体管理にアクセスできる場合は、特定のドキュメントライブラリの詳細なバックアップを実行できます。あなたが望むどんなウェブサイトの下でもそれを復元することができるより。このソリューションは、アイテムを1つずつコピー(および削除)するよりも高速である必要があります。バックアップと復元については、http://blogs.msdn.com/b/russmax/archive/2009/10/21/sharepoint-2010-granular-backup-restore-part-1.aspxを参照してください。