老爷子88 发表于 2015-5-30 07:43:51

[转帖]文件上传、带进度(FTP类)

实现效果:http://www.smartgz.com/Blog/Uploads/2008/040310D04.PNG   
  功能描述:

[*]建立FTP链接
[*]支持代理
[*]多种重载的同步上传文件
[*]多种重载的异步上传文件
[*]多种重载的同步下载文件
[*]多种重载的异步下载文件
[*]上传文件的进度百分比
[*]下载文件的进度白分比
[*]有区分的列出目录或者文件的信息(考虑到MS DOS显示格式和UNIX格式)
[*]目录或文件存在的判断
[*]删除文件
[*]重命名文件、目录
[*]在FTP服务器上面拷贝、移动文件(许多人可能在苦苦寻找这个功能)
[*]建立、删除目录
[*]目录切换操作(很新颖哦 J)
  点击下载代码
  调用方法,目前只用上传功能:
    定义全局私有变量:
private clsFTP cf;
  按钮事件:
      private void btn_upFile_Click(object sender, EventArgs e)
      {
            lb_upload.Text = "正在上传文件,请等待...";
             cf = new clsFTP(new Uri("ftp://192.168.43.55/"), "temp", "temp");
            string localFile = Application.StartupPath.ToString() + "file://output//zt.rar";
             cf.UploadProgressChanged+=new clsFTP.De_UploadProgressChanged(cf_UploadProgressChanged);
             cf.UploadFileCompleted+=new clsFTP.De_UploadFileCompleted(cf_UploadFileCompleted);
             cf.UploadFileAsync(localFile, true); //调用异步传输,若有文件存在则覆盖。
      }
  事件捆绑,反映上传进度:
      public void cf_UploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
      {
            this.pgrBarFileUpload.Maximum = (int)e.TotalBytesToSend;
            this.pgrBarFileUpload.Value =(int) e.BytesSent;
            lb_upload.Text = string.Format("文件总大小:{0}k,已经上传: {1}k。", e.TotalBytesToSend/1024,e.BytesSent/1024);
      }
      public void cf_UploadFileCompleted(object sender, UploadFileCompletedEventArgs e)
      {
                        try
            {
                lb_upload.Text = "无法连接到服务器,或者用户登陆失败!";
                lb_error.Text =e.Error.Message.ToString();
            }
            catch
            {
                lb_upload.Text = "文件上传成功!";
                lb_error.Text = "";
            }
      }

转自:http://www.smartgz.com/blog/Article/1107.asp
页: [1]
查看完整版本: [转帖]文件上传、带进度(FTP类)