110,499
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net;
using System.Net.Sockets;
namespace FTPclient
{
public partial class frmFTPClient : Form
{
private string serverdirectory ;
public void FillDirectoryList(Stream stre)
{
StreamReader strr = new StreamReader(stre);
string str = strr.ReadToEnd();
string[] strl = str.Split('\n');
listFile.DataSource = strl;
strr.Close();
}
public frmFTPClient()
{
InitializeComponent();
}
private void btnOpen_Click(object sender, EventArgs e)
{
Cursor c = this.Cursor;
FtpWebResponse respone = null;
Stream stream = null;
try
{
this.Cursor = Cursors.WaitCursor;
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(txtserver.Text);
request.Credentials = new NetworkCredential(txtuser.Text, txtpwd.Text);
request.Method = WebRequestMethods.Ftp.ListDirectory;
respone = (FtpWebResponse)request.GetResponse();
stream = respone.GetResponseStream();
FillDirectoryList(stream);
serverdirectory = null;
btnGetFile.Enabled = false;
btnOpenDirectory.Enabled = false;
}
catch( Exception ex)
{
MessageBox.Show("ERROE FTP Client");
}
finally
{
if (respone!=null)
respone.Close();
if (stream!=null)
stream.Close();
this.Cursor = c;
}
}
private void btnOpenDirectory_Click(object sender, EventArgs e)
{
FtpWebResponse respone = null;
Stream stream = null;
try
{
string sub = listFile.SelectedValue.ToString().Trim();
serverdirectory += @"/" + sub;
Uri baseuri = new Uri(txtserver.Text);
Uri uri = new Uri(baseuri, serverdirectory);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.Credentials = new NetworkCredential(txtuser.Text, txtpwd.Text);
request.Method = WebRequestMethods.Ftp.ListDirectory;
respone = (FtpWebResponse)request.GetResponse();
stream = respone.GetResponseStream();
FillDirectoryList(stream);
//serverdirectory = null;
//btnGetFile.Enabled = false;
//btnOpenDirectory.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show("ERROE FTP Client");
}
finally
{
if (respone != null)
respone.Close();
if (stream != null)
stream.Close();
}
}
private void btnGetFile_Click(object sender, EventArgs e)
{
FtpWebResponse respone = null;
Stream instream = null;
Stream outstream = null;
try
{
Uri baseuri = new Uri(txtserver.Text);
string name = listFile.SelectedValue.ToString().Trim();
string fullname = serverdirectory + @"/" + name;
Uri uri = new Uri(baseuri, fullname);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(txtserver.Text);
request.Credentials = new NetworkCredential(txtuser.Text, txtpwd.Text);
///?????
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UseBinary = cbusebinary.Checked;
respone = (FtpWebResponse)request.GetResponse();
instream = respone.GetResponseStream();
SaveFileDialog sf = new SaveFileDialog();
sf.FileName = name;
if (sf.ShowDialog() == DialogResult.OK)
{
outstream = File.OpenWrite(sf.FileName);
byte[] buffer = new byte[4096];
int size = 0;
while ((size=instream.Read(buffer,0,4096))>0)
{
outstream.Write(buffer, 0, size);
}
}
//FillDirectoryList(instream);
//serverdirectory = null;
//btnGetFile.Enabled = false;
//btnOpenDirectory.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show("ERROE FTP Client");
}
finally
{
if (respone != null)
respone.Close();
if (instream != null)
instream.Close();
if (outstream != null)
outstream.Close();
}
}
private void listFile_SelectedIndexChanged(object sender, EventArgs e)
{
btnGetFile.Enabled = true;
btnOpenDirectory.Enabled = true;
}
}
}