C# 使用Sockets 存取 FTP Framework1.1 也可使用

C# 使用Sockets 存取 FTP Framework1.1 也可使用

Technorati 的標籤: ,,

這是一份網路上找來的SourceCode 試了一下沒甚麼問題,包含了上傳/刪除FTP檔案、建立資料夾、檔案搬移

把大致的用法做個紀錄

 

原理:使用System.Net.Sockets 建立FTP連線,下面是連線方法


        /// 建立連線
        /// </summary>
        public void Connect()
        {
            socketControl = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint ep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 21);
            // 連線
            socketControl.Connect(ep);


            // 登入
            SendCommand("USER " + "登入帳號");
			SendCommand("PASS " + "登入密碼");
        }

        /// <summary>
        /// 傳送命令並取得回應碼和最後一行的回應字串
        /// </summary>
        /// <param name="strCommand">命令</param>
        private void SendCommand(String strCommand)
        {
			Socket socketControl;
            Encoding e = Encoding.GetEncoding("big5");
            Byte[] cmdBytes = e.GetBytes((strCommand + "\r\n").ToCharArray());
            socketControl.Send(cmdBytes, cmdBytes.Length, 0);
        }

使用方法:

已經把SourceCode打包成一個FTClient.cs的檔案,直接呼叫就可以用,SourceCode包含範例都會在附加檔案中

在這裡就只列出基本的上傳/刪除



namespace Web.TestCodeFTP
{
    public partial class UploadFTP : System.Web.UI.Page
    {
        FTPClient FTP;
        
        //上傳檔案
        string FileName = "happy.jpg"; 

        //FTP位置
        string RemoteHost = "127.0.0.1";

        //目地資料夾
        string remortePath = "";  

        //帳號
        string RemoteUser = "";

        //密碼
        string RemotePass = "";

        //連接阜
        int RemotePort = 21;

        protected void Page_Load(object sender, EventArgs e)
        {
            labPath.Text = Server.MapPath("/Images/") + FileName;

            //建立連線
            FTP = new FTPClient(RemoteHost, remortePath, RemoteUser, RemotePass, RemotePort);
        }

        protected void BtnInsert_Click(object sender, EventArgs e)
        {
            try
            {
                //上傳
                FTP.Put(Server.MapPath("/Images/") + FileName);
                Label1.Text = "上傳成功";
            }
            catch (Exception ex)
            {
                Label1.Text = ex.Message;
            }
        }

        protected void BtnDel_Click(object sender, EventArgs e)
        {
            try
            {
                //刪除
                FTP.Delete(FileName);
                Label1.Text = "刪除成功";
            }
            catch (Exception ex)
            {
                Label1.Text = ex.Message;
            }
        }

    }
}

 

點此下載