{"id":494,"date":"2010-10-01T03:06:06","date_gmt":"2010-10-01T03:06:06","guid":{"rendered":"http:\/\/enjoyasp.net\/?p=494"},"modified":"2010-10-01T03:06:50","modified_gmt":"2010-10-01T03:06:50","slug":"%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%90%8c%e6%ad%a5%ef%bc%8cftp%e7%9a%84%e5%ae%9e%e7%8e%b0%ef%bc%88c%ef%bc%89","status":"publish","type":"post","link":"https:\/\/enjoyasp.net\/index.php\/2010\/10\/01\/%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%90%8c%e6%ad%a5%ef%bc%8cftp%e7%9a%84%e5%ae%9e%e7%8e%b0%ef%bc%88c%ef%bc%89\/","title":{"rendered":"\u670d\u52a1\u5668\u540c\u6b65\uff0cFtp\u7684\u5b9e\u73b0\uff08c#\uff09"},"content":{"rendered":"<pre lang=\"csharp\">\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Text;\r\nusing System.IO;\r\nusing System.Net;\r\n\r\nusing System.Globalization;\r\n\r\nnamespace FtpTest1\r\n{\r\n\r\n    public class FtpWeb\r\n    {\r\n        string ftpServerIP;\r\n        string ftpRemotePath;\r\n        string ftpUserID;\r\n        string ftpPassword;\r\n        string ftpURI;\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u8fde\u63a5FTP\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"FtpServerIP\">FTP\u8fde\u63a5\u5730\u5740<\/param>\r\n        \/\/\/ <param name=\"FtpRemotePath\">\u6307\u5b9aFTP\u8fde\u63a5\u6210\u529f\u540e\u7684\u5f53\u524d\u76ee\u5f55, \u5982\u679c\u4e0d\u6307\u5b9a\u5373\u9ed8\u8ba4\u4e3a\u6839\u76ee\u5f55<\/param>\r\n        \/\/\/ <param name=\"FtpUserID\">\u7528\u6237\u540d<\/param>\r\n        \/\/\/ <param name=\"FtpPassword\">\u5bc6\u7801<\/param>\r\n        public FtpWeb(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)\r\n        {\r\n            ftpServerIP = FtpServerIP;\r\n            ftpRemotePath = FtpRemotePath;\r\n            ftpUserID = FtpUserID;\r\n            ftpPassword = FtpPassword;\r\n            ftpURI = \"ftp:\/\/\" + ftpServerIP + \"\/\" ;\r\n        }\r\n\r\n\r\n        static void Main() {\r\n            \/\/string file = \"c:\\\\aq3.gifa\";\r\n            \/\/FileInfo fileInf = new FileInfo(file);\r\n            \/\/if (!fileInf.Exists)\r\n            \/\/{\r\n            \/\/    Console.WriteLine(file + \" no exists\");\r\n            \/\/}\r\n            \/\/else {\r\n            \/\/    Console.WriteLine(\"yes\");\r\n            \/\/}\r\n            \/\/Console.ReadLine();\r\n            FtpWeb fw = new FtpWeb(\"121.11.65.10\", \"\", \"aa1\", \"aa\");\r\n            string[] filePaths = { \"c:\\\\aq3.gif1\", \"c:\\\\aq2.gif1\", \"c:\\\\bsmain_runtime.log\" };\r\n            Console.WriteLine(fw.UploadFile(filePaths));\r\n            Console.ReadLine();\r\n        }\r\n\r\n        \/\/\u4e0a\u4f20\u6587\u4ef6\r\n        public string UploadFile( string[] filePaths ) {\r\n            StringBuilder sb = new StringBuilder();\r\n            if ( filePaths != null && filePaths.Length > 0 ){\r\n                foreach( var file in filePaths ){\r\n                    sb.Append(Upload( file ));\r\n                    \r\n                }\r\n            }\r\n            return sb.ToString();\r\n        }\r\n\r\n         \/\/\/ <summary>\r\n        \/\/\/ \u4e0a\u4f20\u6587\u4ef6\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"filename\"><\/param>\r\n        private string Upload(string filename)\r\n        {\r\n            FileInfo fileInf = new FileInfo(filename);\r\n            if ( !fileInf.Exists ){\r\n                return filename + \" \u4e0d\u5b58\u5728!\\n\";\r\n            }\r\n\r\n            string uri = ftpURI + fileInf.Name;\r\n            FtpWebRequest reqFTP;\r\n            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));\r\n            \r\n            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);\r\n            reqFTP.KeepAlive = false;\r\n            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;\r\n            reqFTP.UseBinary = true;\r\n            reqFTP.UsePassive = false;  \/\/\u9009\u62e9\u4e3b\u52a8\u8fd8\u662f\u88ab\u52a8\u6a21\u5f0f\r\n            \/\/Entering Passive Mode\r\n            reqFTP.ContentLength = fileInf.Length;\r\n            int buffLength = 2048;\r\n            byte[] buff = new byte[buffLength];\r\n            int contentLen;\r\n            FileStream fs = fileInf.OpenRead();\r\n            try\r\n            {\r\n                Stream strm = reqFTP.GetRequestStream();\r\n                contentLen = fs.Read(buff, 0, buffLength);\r\n                while (contentLen != 0)\r\n                {\r\n                    strm.Write(buff, 0, contentLen);\r\n                    contentLen = fs.Read(buff, 0, buffLength);\r\n                }\r\n                strm.Close();\r\n                fs.Close();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                return \"\u540c\u6b65 \"+filename+\"\u65f6\u8fde\u63a5\u4e0d\u4e0a\u670d\u52a1\u5668!\\n\";\r\n                \/\/Insert_Standard_ErrorLog.Insert(\"FtpWeb\", \"Upload Error --> \" + ex.Message);\r\n            }\r\n            return \"\";\r\n        }\r\n\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u4e0b\u8f7d\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"filePath\"><\/param>\r\n        \/\/\/ <param name=\"fileName\"><\/param>\r\n        public void Download(string filePath, string fileName)\r\n        {\r\n            FtpWebRequest reqFTP;\r\n            try\r\n            {\r\n                FileStream outputStream = new FileStream(filePath + \"\\\\\" + fileName, FileMode.Create);\r\n\r\n                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + fileName));\r\n                reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;\r\n                reqFTP.UseBinary = true;\r\n                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);\r\n                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();\r\n                Stream ftpStream = response.GetResponseStream();\r\n                long cl = response.ContentLength;\r\n                int bufferSize = 2048;\r\n                int readCount;\r\n                byte[] buffer = new byte[bufferSize];\r\n\r\n                readCount = ftpStream.Read(buffer, 0, bufferSize);\r\n                while (readCount > 0)\r\n                {\r\n                    outputStream.Write(buffer, 0, readCount);\r\n                    readCount = ftpStream.Read(buffer, 0, bufferSize);\r\n                }\r\n\r\n                ftpStream.Close();\r\n                outputStream.Close();\r\n                response.Close();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Insert_Standard_ErrorLog.Insert(\"FtpWeb\", \"Download Error --> \" + ex.Message);\r\n            }\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u5220\u9664\u6587\u4ef6\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"fileName\"><\/param>\r\n        public void Delete(string fileName)\r\n        {\r\n            try\r\n            {\r\n                string uri = ftpURI + fileName;\r\n                FtpWebRequest reqFTP;\r\n                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));\r\n\r\n                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);\r\n                reqFTP.KeepAlive = false;\r\n                reqFTP.Method = WebRequestMethods.Ftp.DeleteFile;\r\n\r\n                string result = String.Empty;\r\n                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();\r\n                long size = response.ContentLength;\r\n                Stream datastream = response.GetResponseStream();\r\n                StreamReader sr = new StreamReader(datastream);\r\n                result = sr.ReadToEnd();\r\n                sr.Close();\r\n                datastream.Close();\r\n                response.Close();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Insert_Standard_ErrorLog.Insert(\"FtpWeb\", \"Delete Error --> \" + ex.Message + \"  \u6587\u4ef6\u540d:\" + fileName);\r\n            }\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u83b7\u53d6\u5f53\u524d\u76ee\u5f55\u4e0b\u660e\u7ec6(\u5305\u542b\u6587\u4ef6\u548c\u6587\u4ef6\u5939)\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <returns><\/returns>\r\n        public string[] GetFilesDetailList()\r\n        {\r\n            string[] downloadFiles;\r\n            try\r\n            {\r\n                StringBuilder result = new StringBuilder();\r\n                FtpWebRequest ftp;\r\n                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));\r\n                ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);\r\n                ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;\r\n                WebResponse response = ftp.GetResponse();\r\n                StreamReader reader = new StreamReader(response.GetResponseStream());\r\n                string line = reader.ReadLine();\r\n                line = reader.ReadLine();\r\n                line = reader.ReadLine();\r\n                while (line != null)\r\n                {\r\n                    result.Append(line);\r\n                    result.Append(\"\\n\");\r\n                    line = reader.ReadLine();\r\n                }\r\n                result.Remove(result.ToString().LastIndexOf(\"\\n\"), 1);\r\n                reader.Close();\r\n                response.Close();\r\n                return result.ToString().Split('\\n');\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                downloadFiles = null;\r\n                Insert_Standard_ErrorLog.Insert(\"FtpWeb\", \"GetFilesDetailList Error --> \" + ex.Message);\r\n                return downloadFiles;\r\n            }\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u83b7\u53d6\u5f53\u524d\u76ee\u5f55\u4e0b\u6587\u4ef6\u5217\u8868(\u4ec5\u6587\u4ef6)\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <returns><\/returns>\r\n        public string[] GetFileList(string mask)\r\n        {\r\n            string[] downloadFiles;\r\n            StringBuilder result = new StringBuilder();\r\n            FtpWebRequest reqFTP;\r\n            try\r\n            {\r\n                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));\r\n                reqFTP.UseBinary = true;\r\n                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);\r\n                reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;\r\n                WebResponse response = reqFTP.GetResponse();\r\n                StreamReader reader = new StreamReader(response.GetResponseStream());\r\n\r\n                string line = reader.ReadLine();\r\n                while (line != null)\r\n                {\r\n                    if (mask.Trim() != string.Empty && mask.Trim() != \"*.*\")\r\n                    {\r\n                        string mask_ = mask.Substring(0, mask.IndexOf(\"*\"));\r\n                        if (line.Substring(0, mask_.Length) == mask_)\r\n                        {\r\n                            result.Append(line);\r\n                            result.Append(\"\\n\");\r\n                        }\r\n                    }\r\n                    else\r\n                    {\r\n                        result.Append(line);\r\n                        result.Append(\"\\n\");\r\n                    }\r\n                    line = reader.ReadLine();\r\n                }\r\n                result.Remove(result.ToString().LastIndexOf('\\n'), 1);\r\n                reader.Close();\r\n                response.Close();\r\n                return result.ToString().Split('\\n');\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                downloadFiles = null;\r\n                if (ex.Message.Trim() != \"\u8fdc\u7a0b\u670d\u52a1\u5668\u8fd4\u56de\u9519\u8bef: (550) \u6587\u4ef6\u4e0d\u53ef\u7528(\u4f8b\u5982\uff0c\u672a\u627e\u5230\u6587\u4ef6\uff0c\u65e0\u6cd5\u8bbf\u95ee\u6587\u4ef6)\u3002\")\r\n                {\r\n                    Insert_Standard_ErrorLog.Insert(\"FtpWeb\", \"GetFileList Error --> \" + ex.Message.ToString());\r\n                }\r\n                return downloadFiles;\r\n            }\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u83b7\u53d6\u5f53\u524d\u76ee\u5f55\u4e0b\u6240\u6709\u7684\u6587\u4ef6\u5939\u5217\u8868(\u4ec5\u6587\u4ef6\u5939)\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <returns><\/returns>\r\n        public string[] GetDirectoryList()\r\n        {\r\n            string[] drectory = GetFilesDetailList();\r\n            string m = string.Empty;\r\n            foreach (string str in drectory)\r\n            {\r\n                if (str.Trim().Substring(0, 1).ToUpper() == \"D\")\r\n                {\r\n                    m += str.Substring(54).Trim() + \"\\n\";\r\n                }\r\n            }\r\n\r\n            char[] n = new char[] { '\\n' };\r\n            return m.Split(n);\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u5224\u65ad\u5f53\u524d\u76ee\u5f55\u4e0b\u6307\u5b9a\u7684\u5b50\u76ee\u5f55\u662f\u5426\u5b58\u5728\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"RemoteDirectoryName\">\u6307\u5b9a\u7684\u76ee\u5f55\u540d<\/param>\r\n        public bool DirectoryExist(string RemoteDirectoryName)\r\n        {\r\n            string[] dirList = GetDirectoryList();\r\n            foreach (string str in dirList)\r\n            {\r\n                if (str.Trim() == RemoteDirectoryName.Trim())\r\n                {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u5224\u65ad\u5f53\u524d\u76ee\u5f55\u4e0b\u6307\u5b9a\u7684\u6587\u4ef6\u662f\u5426\u5b58\u5728\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"RemoteFileName\">\u8fdc\u7a0b\u6587\u4ef6\u540d<\/param>\r\n        public bool FileExist(string RemoteFileName)\r\n        {\r\n            string[] fileList = GetFileList(\"*.*\");\r\n            foreach (string str in fileList)\r\n            {\r\n                if (str.Trim() == RemoteFileName.Trim())\r\n                {\r\n                    return true;\r\n                }\r\n            }\r\n            return false;\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u521b\u5efa\u6587\u4ef6\u5939\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"dirName\"><\/param>\r\n        public void MakeDir(string dirName)\r\n        {\r\n            FtpWebRequest reqFTP;\r\n            try\r\n            {\r\n                \/\/ dirName = name of the directory to create.\r\n                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + dirName));\r\n                reqFTP.Method = WebRequestMethods.Ftp.MakeDirectory;\r\n                reqFTP.UseBinary = true;\r\n                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);\r\n                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();\r\n                Stream ftpStream = response.GetResponseStream();\r\n\r\n                ftpStream.Close();\r\n                response.Close();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Insert_Standard_ErrorLog.Insert(\"FtpWeb\", \"MakeDir Error --> \" + ex.Message);\r\n            }\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u83b7\u53d6\u6307\u5b9a\u6587\u4ef6\u5927\u5c0f\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"filename\"><\/param>\r\n        \/\/\/ <returns><\/returns>\r\n        public long GetFileSize(string filename)\r\n        {\r\n            FtpWebRequest reqFTP;\r\n            long fileSize = 0;\r\n            try\r\n            {\r\n                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + filename));\r\n                reqFTP.Method = WebRequestMethods.Ftp.GetFileSize;\r\n                reqFTP.UseBinary = true;\r\n                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);\r\n                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();\r\n                Stream ftpStream = response.GetResponseStream();\r\n                fileSize = response.ContentLength;\r\n\r\n                ftpStream.Close();\r\n                response.Close();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Insert_Standard_ErrorLog.Insert(\"FtpWeb\", \"GetFileSize Error --> \" + ex.Message);\r\n            }\r\n            return fileSize;\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u6539\u540d\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"currentFilename\"><\/param>\r\n        \/\/\/ <param name=\"newFilename\"><\/param>\r\n        public void ReName(string currentFilename, string newFilename)\r\n        {\r\n            FtpWebRequest reqFTP;\r\n            try\r\n            {\r\n                reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI + currentFilename));\r\n                reqFTP.Method = WebRequestMethods.Ftp.Rename;\r\n                reqFTP.RenameTo = newFilename;\r\n                reqFTP.UseBinary = true;\r\n                reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);\r\n                FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();\r\n                Stream ftpStream = response.GetResponseStream();\r\n\r\n                ftpStream.Close();\r\n                response.Close();\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                Insert_Standard_ErrorLog.Insert(\"FtpWeb\", \"ReName Error --> \" + ex.Message);\r\n            }\r\n        }\r\n\r\n        \/\/\/ <summary>\r\n        \/\/\/ \u79fb\u52a8\u6587\u4ef6\r\n        \/\/\/ <\/summary>\r\n        \/\/\/ <param name=\"currentFilename\"><\/param>\r\n        \/\/\/ <param name=\"newFilename\"><\/param>\r\n        public void MovieFile(string currentFilename, string newDirectory)\r\n        {\r\n            ReName(currentFilename, newDirectory);\r\n        }\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>using System; using System.Collections.Generic; using S [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-494","post","type-post","status-publish","format-standard","hentry","category-14"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts\/494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/comments?post=494"}],"version-history":[{"count":0,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/posts\/494\/revisions"}],"wp:attachment":[{"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/media?parent=494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/categories?post=494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/enjoyasp.net\/index.php\/wp-json\/wp\/v2\/tags?post=494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}