文件上传、带进度(FTP类)
实现效果:
功能描述:
建立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.cnblogs.com/zpq521/admin/ftp://192.168.43.55/"), "temp", "temp");
string localFile = Application.StartupPath.ToString() + "http://www.cnblogs.com/zpq521/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 = "";
}
}