IIS7.5 の WebDAV サーバーに対してC#でファイルのアップロードを行います。
今回は、"C:\temp\test.jpg"にあるファイルを"http://localhost/test.jpg"にアップロードしています。
using System;
using System.IO;
using System.Net;
namespace WebDAV
{
public class Program
{
static void Main(string[] args)
{
// HttpWebRequestを初期化し、認証とメゾットを設定
HttpWebRequest webReq = (HttpWebRequest)HttpWebRequest.Create("http://localhost/test.jpg");
webReq.Credentials = new NetworkCredential("USERNAME", "PASSWORD");
webReq.Method = WebRequestMethods.File.UploadFile;
// アップロードするファイルをオープンし、HttpWebRequestにサイズを設定
FileStream inStrm = new FileStream(@"C:\Temp\test.jpg", FileMode.Open);
webReq.ContentLength = inStrm.Length;
// ファイルをバッファに読み込み・サーバーへ書き込み
using (Stream outStrm = webReq.GetRequestStream())
{
int bufSize = 1048576; // 1MB
byte[] buffer = new byte[bufSize];
int bytesRead = 0;
while ((bytesRead = inStrm.Read(buffer, 0, bufSize)) > 0)
outStrm.Write(buffer, 0, bytesRead);
inStrm.Close();
outStrm.Flush();
outStrm.Close();
}
// 結果取得(今回はヘッダとステータス)
HttpWebResponse res = (HttpWebResponse)webReq.GetResponse();
Console.WriteLine(res.Headers.ToString());
Console.WriteLine("Status Code: {0}", res.StatusCode);
res.Close();
Console.ReadLine();
}
}
}
尚、ドライブにマップしてあれば、C#からでも通常のドライブと同じように行えます。
※WebDAVサーバーをZドライブにマップ済み
File.Copy(@"C:\temp\test.jpg", @"Z:\test.jpg");
※コードは例外処理を省略しています。
WebDAVのインストールと設定(IIS7.5)