C#通过FtpWebResponse 编写GUI 简易 FTP客户端
2018-07-20 来源:open-open
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
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
下一篇:Springmvc文件上传监听
最新资讯
热门推荐