Csharp/C Sharp by API/System.Net/FtpWebResponse

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

FtpWebResponse.GetResponseStream()

<source lang="csharp"> using System; using System.Collections.Generic; using System.ruponentModel; 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.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.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());
   }

}


 </source>