ドキュメントライブラリには何千ものファイルがあるので、コードを介してSharePointドキュメントライブラリからファイルをダウンロードしたいと思います。
SharePointサーバーで実行してファイルをダウンロードするコンソールアプリケーションを作成することを考えています。このアプローチは正しいですか、それとも、これを行うための他の効率的な方法があります。
コードに関するヘルプは大歓迎です。
ドキュメントライブラリには何千ものファイルがあるので、コードを介してSharePointドキュメントライブラリからファイルをダウンロードしたいと思います。
SharePointサーバーで実行してファイルをダウンロードするコンソールアプリケーションを作成することを考えています。このアプローチは正しいですか、それとも、これを行うための他の効率的な方法があります。
コードに関するヘルプは大歓迎です。
SigarDaveが言ったように、コードを1行も記述せずにこれを実現することは完全に可能です。しかし、本当にこのソリューションをコーディングしたい場合は、次のようになります。
static void Main(string[] args)
{
// Change to the URL of your site
using (var site = new SPSite("http://MySite"))
using (var web = site.OpenWeb())
{
var list = web.Lists["MyDocumentLibrary"]; // Get the library
foreach (SPListItem item in list.Items)
{
if (item.File != null)
{
// Concat strings to get the absolute URL
// to pass to an WebClient object.
var fileUrl = string.Format("{0}/{1}", site.Url, item.File.Url);
var result = DownloadFile(fileUrl, "C:\\FilesFromMyLibrary\\", item.File.Name);
Console.WriteLine(result ? "Downloaded \"{0}\"" : "Error on \"{0}\"", item.File.Name);
}
}
}
Console.ReadKey();
}
private static bool DownloadFile(string url, string dest, string fileName)
{
var client = new WebClient();
// Change the credentials to the user that has the necessary permissions on the
// library
client.Credentials = new NetworkCredential("Username", "Password", "Domain");
var bytes = client.DownloadData(url);
try
{
using (var file = File.Create(dest + fileName))
{
file.Write(bytes, 0, bytes.Length); // Write file to disk
return true;
}
}
catch (Exception)
{
return false;
}
}
スクリプトを使用しない別の方法は、IEを使用してドキュメントライブラリを開き、リボンで[ファイルエクスプローラーで開く]をクリックして、デスクトップにファイルをドラッグアンドドロップすることです。