| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
n342
10年前发布

C#通过FtpWebResponse 编写GUI 简易 FTP客户端

   using System;  using System.Collections.Generic;  using System.ComponentModel;  using System.Data;  using System.Drawing;  using System.Windows.Forms;  using System.Net;  using System.IO;      class FtpClientForm : Form {      public FtpClientForm() {          InitializeComponent();      }          private string serverDirectory;          private void OnOpen(object sender, EventArgs e) {          Cursor currentCursor = this.Cursor;          FtpWebResponse response = null;          Stream stream = null;          this.Cursor = Cursors.WaitCursor;              FtpWebRequest request = (FtpWebRequest)WebRequest.Create(textServer.Text);          request.Credentials = new NetworkCredential(textUsername.Text,                textPassword.Text);          request.Method = WebRequestMethods.Ftp.ListDirectory;              response = (FtpWebResponse)request.GetResponse();              stream = response.GetResponseStream();          FillDirectoryList(stream);              serverDirectory = null;          buttonOpenDirectory.Enabled = false;          buttonGetFile.Enabled = false;              if (response != null)              response.Close();          if (stream != null)              stream.Close();          this.Cursor = currentCursor;      }          private void FillDirectoryList(Stream stream) {          StreamReader reader = new StreamReader(stream);          string content = reader.ReadToEnd();          string[] files = content.Split('\\n');          listFiles.DataSource = files;          reader.Close();      }          private void OnOpenDirectory(object sender, EventArgs e) {          FtpWebResponse response = null;          Stream stream = null;          string subDirectory = listFiles.SelectedValue.ToString().Trim();          serverDirectory += @"/" + subDirectory;          Uri baseUri = new Uri(textServer.Text);          Uri uri = new Uri(baseUri, serverDirectory);              FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);          request.Credentials = new NetworkCredential(textUsername.Text,                textPassword.Text);              request.Method = WebRequestMethods.Ftp.ListDirectory;          response = (FtpWebResponse)request.GetResponse();              stream = response.GetResponseStream();          FillDirectoryList(stream);          if (response != null)              response.Close();          if (stream != null)              stream.Close();      }          private void OnDownloadFile(object sender, EventArgs e) {          FtpWebResponse response = null;          Stream inStream = null;          Stream outStream = null;          Uri baseUri = new Uri(textServer.Text);              string filename = listFiles.SelectedValue.ToString().Trim();          string fullFilename = serverDirectory + @"/" + filename;              Uri uri = new Uri(baseUri, fullFilename);              FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);          request.Credentials = new NetworkCredential(textUsername.Text,textPassword.Text);          request.Method = WebRequestMethods.Ftp.DownloadFile;          request.UseBinary = checkBoxBinary.Checked;              response = (FtpWebResponse)request.GetResponse();              inStream = response.GetResponseStream();              saveFileDialog1.FileName = filename;              if (saveFileDialog1.ShowDialog() == DialogResult.OK) {              outStream = File.OpenWrite(saveFileDialog1.FileName);              byte[] buffer = new byte[4096];              int size = 0;              while ((size = inStream.Read(buffer, 0, 4096)) > 0) {                  outStream.Write(buffer, 0, size);              }          }              if (inStream != null)              inStream.Close();          if (outStream != null)              outStream.Close();          if (response != null)              response.Close();          }          private void OnFileSelection(object sender, EventArgs e) {          this.buttonGetFile.Enabled = true;          this.buttonOpenDirectory.Enabled = true;      }      private void InitializeComponent() {          this.label1 = new System.Windows.Forms.Label();          this.textServer = new System.Windows.Forms.TextBox();          this.buttonOpen = new System.Windows.Forms.Button();          this.statusStrip1 = new System.Windows.Forms.StatusStrip();          this.listFiles = new System.Windows.Forms.ListBox();          this.buttonOpenDirectory = new System.Windows.Forms.Button();          this.buttonGetFile = new System.Windows.Forms.Button();          this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog();          this.checkBoxBinary = new System.Windows.Forms.CheckBox();          this.label2 = new System.Windows.Forms.Label();          this.label3 = new System.Windows.Forms.Label();          this.textUsername = new System.Windows.Forms.TextBox();          this.textPassword = new System.Windows.Forms.TextBox();          this.SuspendLayout();          this.label1.AutoSize = true;          this.label1.Location = new System.Drawing.Point(28, 31);          this.label1.Size = new System.Drawing.Size(37, 13);          this.label1.Text = "Server:";          this.textServer.Location = new System.Drawing.Point(109, 31);          this.textServer.Size = new System.Drawing.Size(146, 20);          this.textServer.Text = "ftp://";          this.buttonOpen.Location = new System.Drawing.Point(371, 31);          this.buttonOpen.Size = new System.Drawing.Size(103, 23);          this.buttonOpen.Text = "Open";          this.buttonOpen.Click += new System.EventHandler(this.OnOpen);          this.statusStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Table;          this.statusStrip1.Location = new System.Drawing.Point(0, 0);          this.statusStrip1.Size = new System.Drawing.Size(496, 18);          this.statusStrip1.Text = "statusStrip1";          this.listFiles.FormattingEnabled = true;          this.listFiles.Location = new System.Drawing.Point(28, 149);          this.listFiles.Size = new System.Drawing.Size(315, 160);          this.listFiles.SelectedIndexChanged += new System.EventHandler(this.OnFileSelection);          this.buttonOpenDirectory.Enabled = false;          this.buttonOpenDirectory.Location = new System.Drawing.Point(371, 77);          this.buttonOpenDirectory.Name = "buttonOpenDirectory";          this.buttonOpenDirectory.Size = new System.Drawing.Size(103, 23);          this.buttonOpenDirectory.TabIndex = 8;          this.buttonOpenDirectory.Text = "Open Directory";          this.buttonOpenDirectory.Click += new System.EventHandler(this.OnOpenDirectory);          this.buttonGetFile.Enabled = false;          this.buttonGetFile.Location = new System.Drawing.Point(371, 122);          this.buttonGetFile.Size = new System.Drawing.Size(103, 23);          this.buttonGetFile.Text = "Get File";          this.buttonGetFile.Click += new System.EventHandler(this.OnDownloadFile);          this.checkBoxBinary.AutoSize = true;          this.checkBoxBinary.Checked = true;          this.checkBoxBinary.CheckState = System.Windows.Forms.CheckState.Checked;          this.checkBoxBinary.Location = new System.Drawing.Point(371, 190);          this.checkBoxBinary.Size = new System.Drawing.Size(81, 17);          this.checkBoxBinary.Text = "Binary Mode";          this.label2.AutoSize = true;          this.label2.Location = new System.Drawing.Point(28, 62);          this.label2.Size = new System.Drawing.Size(54, 13);          this.label2.Text = "Username:";          this.label3.AutoSize = true;          this.label3.Location = new System.Drawing.Point(28, 101);          this.label3.Size = new System.Drawing.Size(52, 13);          this.label3.Text = "Password:";          this.textUsername.Location = new System.Drawing.Point(109, 62);          this.textUsername.Size = new System.Drawing.Size(146, 20);          this.textUsername.Text = "Anonymous";          this.textPassword.Location = new System.Drawing.Point(109, 101);          this.textPassword.PasswordChar = '?';          this.textPassword.Size = new System.Drawing.Size(146, 20);          this.textPassword.UseSystemPasswordChar = true;          this.ClientSize = new System.Drawing.Size(496, 353);          this.Controls.Add(this.textPassword);          this.Controls.Add(this.textUsername);          this.Controls.Add(this.label3);          this.Controls.Add(this.label2);          this.Controls.Add(this.checkBoxBinary);          this.Controls.Add(this.buttonGetFile);          this.Controls.Add(this.buttonOpenDirectory);          this.Controls.Add(this.listFiles);          this.Controls.Add(this.buttonOpen);          this.Controls.Add(this.textServer);          this.Controls.Add(this.label1);          this.Text = "FTP Client";          this.ResumeLayout(false);          this.PerformLayout();          }      private System.Windows.Forms.Label label1;      private System.Windows.Forms.TextBox textServer;      private System.Windows.Forms.Button buttonOpen;      private System.Windows.Forms.StatusStrip statusStrip1;      private System.Windows.Forms.ListBox listFiles;      private System.Windows.Forms.Button buttonOpenDirectory;      private System.Windows.Forms.Button buttonGetFile;      private System.Windows.Forms.SaveFileDialog saveFileDialog1;      private System.Windows.Forms.CheckBox checkBoxBinary;      private System.Windows.Forms.Label label2;      private System.Windows.Forms.Label label3;      private System.Windows.Forms.TextBox textUsername;      private System.Windows.Forms.TextBox textPassword;      [STAThread]      static void Main() {          Application.EnableVisualStyles();          Application.Run(new FtpClientForm());      }  }  //该片段来自于http://www.codesnippet.cn/detail/2303201511957.html