代码太经典 ,方法太全面了,公司内部代码 工具vs2008 重点方法在 WebDavClient.cs类里面FileSever.xml 文件配置远程上传路径<?xml version="1.0" encoding="gb2312"?><fileServer><username>Administrator</username><password>123456</password><url>http://192.168.21.185/BQL/FAA/</url></fileServer>————————————————————————————————说明 Administrator :机子的用户名123456 :机子的密码http://192.168.21.185/BQL/FAA/ :发布到IIS系统,文件夹路径________________________________________________________________重点方法在 WebDavClient.cs类里面using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Net;using System.Xml;using System.Collections;using System.Web; public class WebDavClient { #region WebDavClient public WebDavClient(string configFilePath) { XmlDocument document = new XmlDocument(); document.Load(configFilePath); this.username = document.SelectSingleNode("/fileServer/username").InnerText; this.password = document.SelectSingleNode("/fileServer/password").InnerText; this.url = document.SelectSingleNode("/fileServer/url").InnerText; if (this.url.Length > 0) { if (this.url.Substring(this.url.Length - 1, 1) != "/") { this.url = this.url + "/"; } } this.myCredentialCache = new CredentialCache(); this.myCredentialCache.Add(new Uri(this.url), "NTLM", new NetworkCredential(this.username, this.password)); } public WebDavClient(string url, string username, string password) { this.url = url; this.username = username; this.password = password; this.myCredentialCache = new CredentialCache(); this.myCredentialCache.Add(new Uri(this.url), "NTLM", new NetworkCredential(this.username, this.password)); } #endregion #region field adn property private string message = ""; /// <summary> /// 各种操作结果消息 /// </summary> public string Message { get { return message; } set { message = value; } } private CredentialCache myCredentialCache; private string url; /// <summary> /// 文件服务器地址 /// </summary> public string Url { get { return url; } set { url = value; } } private string username; /// <summary> /// 操作权限用户 /// </summary> public string UserName { get { return username; } set { username = value; } } private string password; /// <summary> /// 操作权限用户密码 /// </summary> public string Password { get { return password; } set { password = value; } } #endregion #region method #region DeleteFile /// <summary> /// DeleteFileOrFolder //删除文件夹 /// </summary> /// <param name="url"></param> /// <returns></returns> public bool Delete(string fileOrfoldername) { this.Message = ""; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + fileOrfoldername); request.Credentials = this.myCredentialCache; request.Method = "DELETE"; WebResponse response = null; try { response = request.GetResponse(); Message = "SUCCESS"; } catch (WebException exception) { this.Message = exception.Message; return false; } finally { if (response != null) { response.Close(); } } return true; } public bool Delete() { return Delete(this.url); } #endregion #region CheckExist public bool CheckExist() { return CheckExist(""); } public bool IsFileExist(string filename) //文件是否存在 (列如:1.txt) { this.Message = ""; string s = "<?xml version=\"1.0\"?><a:propfind xmlns:a=\"DAV:\"><a:prop><a:getcontentlength/></a:prop></a:propfind>"; byte[] bytes = new ASCIIEncoding().GetBytes(s); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.url + filename); request.Credentials = this.myCredentialCache; request.Method = "PROPFIND"; request.ContentType = "text/xml"; request.Headers.Add("Depth", "0"); request.Headers.Add("Translate: f"); request.ContentLength = bytes.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); WebResponse response = null; try { response = request.GetResponse(); } catch (WebException exception) { if (exception.Message.IndexOf("404") != -1) { return false; } this.Message = exception.Message; throw exception; } finally { if (response != null) { response.Close(); } } return true; } public bool CheckExist(string filename) //文件夹是否存在 { this.Message = ""; string s = "<?xml version=\"1.0\"?><a:propfind xmlns:a=\"DAV:\"><a:prop><a:getcontentlength/></a:prop></a:propfind>"; byte[] bytes = new ASCIIEncoding().GetBytes(s); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.url + filename); request.Credentials = this.myCredentialCache; request.Method = "PROPFIND"; request.ContentType = "text/xml"; request.Headers.Add("Depth", "0"); request.Headers.Add("Translate: f"); request.ContentLength = bytes.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); WebResponse response = null; try { response = request.GetResponse(); Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream); string tmp = reader.ReadToEnd(); } catch (WebException exception) { if (exception.Message.IndexOf("404") != -1) { return false; } this.Message = exception.Message; throw exception; } finally { if (response != null) { response.Close(); } } return true; } #endregion #region UploadFile public bool UploadFile(byte[] buffer, string filename) { Stream inputStream = new MemoryStream(buffer); return UploadFile(inputStream, filename); } public bool UploadFile(Stream inputStream, string filename) //上传文件 { this.Message = ""; WebClient client = new WebClient(); client.Credentials = this.myCredentialCache; int length = (int)inputStream.Length; byte[] buffer = new byte[length]; inputStream.Read(buffer, 0, length); Stream stream = client.OpenWrite(this.url + Path.GetFileName(filename), "PUT"); stream.Write(buffer, 0, length); try { stream.Close(); } catch (WebException exception) { this.Message = exception.Message; return false; } return true; } public bool UploadFile(string filepath) { try { return UploadFile(filepath, Path.GetFileName(filepath)); } catch (ArgumentException exception) { this.Message = exception.Message; return false; } } public bool UploadFile(string filepath, string filenewname) { bool result = false; try { FileStream fs = new FileStream(filepath, FileMode.Open); result = UploadFile(fs, filenewname); } catch (ArgumentException exception) { this.Message = exception.Message; result = false; } return result; } #endregion #region CreateFolder public bool CreateFolder() { return CreateFolder(""); } public bool CreateFolder(string foldername) //创建文件夹, { bool check = CheckExist(foldername); //并且判断文件夹存不存在 if (check) { return check; } HttpWebRequest request = (HttpWebRequest)WebRequest.Create(this.url + foldername); request.Credentials = this.myCredentialCache; request.Method = "MKCOL"; WebResponse response = null; try { response = request.GetResponse(); } catch (WebException exception) { this.Message = exception.Message; return false; } finally { if (response != null) { response.Close(); } } return true; } #endregion #region ReName //文件夹重命名 public bool ReName(string FileOrFolderOldName, string FileOrFolderNewName) { this.Message = ""; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url + FileOrFolderOldName); request.Credentials = this.myCredentialCache; request.Headers.Add("Destination", url + FileOrFolderNewName); request.Headers.Add("Overwrite", "F"); request.Method = "MOVE"; WebResponse response = null; try { response = request.GetResponse(); Message = "SUCCESS"; } catch (WebException exception) { this.Message = exception.Message; return false; } finally { if (response != null) { response.Close(); } } return true; } #endregion #endregion }