日期:2014-05-18  浏览次数:20828 次

ftp上传文件 用进度条progressBar显示进度(在线等)

 public class upload : Mypublic
  {
  public delegate void delProgress(int value);
  public event delProgress eventProgress;

  public delegate void delFinish();
  public event delFinish eventFinish;

  public string fileName = "";
  private long current = 0;
  private long total = 1;
  private int percent = 0;
  int temp = 0;

  public void Upload() 
  {
  FileInfo fileinfo = new FileInfo(fileName);
  string uri = "ftp://" + IpAddress + "/" + fileinfo.Name;
  FtpWebRequest reqFtp;

  reqFtp = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + IpAddress + "/" + fileinfo.Name));
  reqFtp.Credentials = new NetworkCredential(Userid, Password);
  reqFtp.KeepAlive = false;
  reqFtp.Method = WebRequestMethods.Ftp.UploadFile;
  reqFtp.UseBinary = true;

  reqFtp.ContentLength = fileinfo.Length;
  total = fileinfo.Length;

  int bufferlenth = 2048;
  byte[] buff = new byte[bufferlenth];
  int contentLen;

  FileStream fs = fileinfo.OpenRead();

  try
  {
  Stream strm = reqFtp.GetRequestStream();
  contentLen = fs.Read(buff, 0, bufferlenth);

  while (contentLen != 0)
  {
  strm.Write(buff, 0, bufferlenth);
  contentLen = fs.Read(buff, 0, bufferlenth);

  current += contentLen;
temp = Int32.Parse((100 * current / total).ToString());
if (temp != percent)
{
eventProgress(temp);
percent = temp;
} }
  strm.Close();
  fs.Close();

  eventFinish();
  }
  catch (Exception ex) 
  {
  MessageBox.Show(ex.Message, "Upload Error");
  }
  }
  }

按钮事件
  private void button1_Click(object sender, EventArgs e)
  {
  if (DialogResult.OK == this.openFileDialog1.ShowDialog())
  {
  upload up = new upload();
  up.IpAddress = "192.168.1.31";
  up.Userid = "Administrator";
  up.Password = "110";
  up.fileName = this.openFileDialog1.FileName;

  up.eventProgress += new upload.delProgress(up_eventProgress);
  up.eventFinish += new upload.delFinish(up_eventFinish);

  Thread t = new Thread(new ThreadStart(up.Upload));
  t.Start();
  }
  }

  void up_eventFinish()
  {
  up_eventProgress(100);
  MessageBox.Show("上传成功!");
  }

  void up_eventProgress(int value)
  {
  this.progressBar1.Value = value;
this.label1.Text = value.ToString() + &qu