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)