I recently had to do this in an WPF client application.
Basically this is a static class that provides the following two methods
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Web; using System.Net; using System.Data; using System.Diagnostics; namespace DAVWrapper { public static class DAVHelper { public static string UploadFile(string destUrl, string sourcePath) { try { Uri destUri = new Uri(destUrl); FileStream inStream = File.OpenRead(sourcePath); WebRequest req = WebRequest.Create(destUri); req.Method = "PUT" req.Headers.Add("Overwrite", "F"); req.Timeout = System.Threading.Timeout.Infinite; req.Credentials = CredentialCache.DefaultCredentials; Stream outStream = req.GetRequestStream(); string status = CopyStream(inStream, outStream); if (status == "success") { outStream.Close(); WebResponse ores = req.GetResponse(); return "success" } else { return status; } } catch (WebException we) { return we.Message; } catch (System.Exception ee) { return ee.Message; } } public static string DownloadFile(string sourceUrl, string destFolder) { try { System.Uri sourceUri = new System.Uri(sourceUrl); WebRequest req = WebRequest.Create(sourceUri); req.Method = "GET" req.Timeout = System.Threading.Timeout.Infinite; req.Credentials = CredentialCache.DefaultCredentials; WebResponse res = req.GetResponse(); Stream inStream = res.GetResponseStream(); FileStream fs = new FileStream(destFolder, FileMode.OpenOrCreate); string status = CopyStream(inStream, fs); if (status == "success") { inStream.Close(); return "success" } else { inStream.Close(); return status; } } catch (WebException we) { return we.Message; } catch (System.Exception ee) { return ee.Message; } } private static string CopyStream(Stream inStream, Stream outStream) { try { byte[] buffer = new byte[1024]; for (; ; ) { int numBytesRead = inStream.Read(buffer, 0, buffer.Length); if (numBytesRead <= 0) break; outStream.Write(buffer, 0, numBytesRead); } inStream.Close(); return "success" } catch (System.Exception ee) { return ee.Message; } } } }
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Web;
using System.Net;
using System.Data;
using System.Diagnostics;
namespace DAVWrapper
{
WebRequest req = WebRequest.Create(destUri);
req.Credentials = CredentialCache.DefaultCredentials;
if (status == "success")
return "success"
public static string DownloadFile(string sourceUrl, string destFolder)
WebRequest req = WebRequest.Create(sourceUri);
FileStream fs = new FileStream(destFolder, FileMode.OpenOrCreate);
private static string CopyStream(Stream inStream, Stream outStream)
outStream.Write(buffer, 0, numBytesRead);