C#支持远程创建文件夹,上传文件2

来源:互联网 发布:windows资源管理器在哪 编辑:程序博客网 时间:2024/05/16 14:42
代码太经典 ,方法太全面了,公司内部代码   工具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                   }


原创粉丝点击