ienki 发表于 2015-5-26 13:32:52

c# 文件上传、带进度(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("http://www.iyunv.com/fmxyw/admin/ftp://192.168.43.55/"), "temp", "temp");
            string localFile = Application.StartupPath.ToString() + "http://www.iyunv.com/fmxyw/admin/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 = "";
            }
      }
link
页: [1]
查看完整版本: c# 文件上传、带进度(FTP类)[转]