asp.net 一个封装比较完整的FTP类_实用技巧

先看这个简单的

复制代码 代码如下:

FTP ftp = new FTP("192.168.1.117", "ahuinan", "123456");

string oldname = this.FileUpload1.PostedFile.FileName;
string newname = dd + h + mm + ss + oldname.Substring(oldname.LastIndexOf("."));

// ftp.Connect();
ftp.OpenUpload(oldname,newname);
while (ftp.DoUpload() > 0)
{
int perc = (int)(((ftp.BytesTotal) * 100) / ftp.FileSize);
Response.Write(perc.ToString() + "%<br/>");
Response.Flush();
}

功能

ü         建立FTP链接

ü         支持代理

ü         多种重载的同步上传文件

ü         多种重载的异步上传文件

ü         多种重载的同步下载文件

ü         多种重载的异步下载文件

ü         上传文件的进度百分比

ü         下载文件的进度白分比

ü         有区分的列出目录或者文件的信息(考虑到MS DOS显示格式和UNIX格式)

ü         目录或文件存在的判断

ü         删除文件

ü         重命名文件、目录

ü         在FTP服务器上面拷贝、移动文件(许多人可能在苦苦寻找这个功能)

ü         建立、删除目录

ü         目录切换操作(很新颖哦 J)

 

公共构造函数


名称


说明


clsFTP()


初始化clsFtp类的新实例


clsFTP(Uri FtpUri, string strUserName, string strPassword)


由FTP地址、FTP登录用户信息、FTP登录用户密码初始化clsFtp类的新实例


clsFTP(Uri FtpUri, string strUserName, string strPassword, WebProxy objProxy)


由FTP地址、FTP登录用户信息、FTP登录用户密码、代理服务器对象初始化clsFtp类的新实例


 


 

 

 

公共属性


名称


说明


Uri


获取或设置FTP服务器地址


DirectoryPath


获取当前工作目录


UserName


获取或设置FTP登录用户


Password


获取或设置FTP登录密码


Proxy


获取或设置连接FTP服务器的代理服务


ErrorMsg


获取操在返回的错误信息

 

 

公共方法


名称


说明


DownloadFile(string RemoteFileName, string LocalPath)


从FTP服务器下载文件,使用与远程文件同名的文件名来保存文件。

参数说明:

RemoteFileName: 远程文件名

LocalPath: 本地路径


DownloadFile(string RemoteFileName, string LocalPath, string LocalFileName)


从FTP服务器下载文件,指定本地路径和本地文件名。

参数说明:

LocalPath: 本地路径

LocalFilePath: 保存文件的本地路径,后面带有"\"

LocalFileName: 保存本地的文件名


DownloadFile(string RemoteFileName)


从FTP服务器下载文件,返回文件二进制数据。

参数说明:

RemoteFileName: 远程文件名


DownloadFileAsync(string RemoteFileName, string LocalPath, string LocalFileName)


从FTP服务器异步下载文件,指定本地路径和本地文件名。

参数说明:

RemoteFileName: 远程文件名       

LocalPath: 保存文件的本地路径,后面带有"\"

LocalFileName: 保存本地的文件名


DownloadFileAsync(string RemoteFileName, string LocalFullPath)


从FTP服务器异步下载文件,指定本地完整路径文件名。

参数说明:

RemoteFileName: 远程文件名

LocalFullPath: 本地完整路径文件名


UploadFile(string LocalFullPath)


上传文件到FTP服务器。

参数说明:

LocalFullPath: 本地带有完整路径的文件名


UploadFile(string LocalFullPath, bool OverWriteRemoteFile)


上传文件到FTP服务器。

参数说明:

LocalFullPath: 本地带有完整路径的文件

OverWriteRemoteFile: 是否覆盖远程服务器上面同名的文件


UploadFile(string LocalFullPath, string RemoteFileName)


上传文件到FTP服务器。

参数说明:

LocalFullPath: 本地带有完整路径的文件

RemoteFileName: 要在FTP服务器上面保存文件名


UploadFile(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile)


上传文件到FTP服务器。

参数说明:

LocalFullPath: 本地带有完整路径的文件名

RemoteFileName: 要在FTP服务器上面保存文件名

OverWriteRemoteFile: 是否覆盖远程服务器上面同名的文件


UploadFile(byte[] FileBytes, string RemoteFileName)


上传文件到FTP服务器。

参数说明:

FileBytes: 上传的二进制数据

RemoteFileName: 要在FTP服务器上面保存文件名


UploadFile(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile)


上传文件到FTP服务器。

参数说明:

FileBytes: 文件二进制内容

RemoteFileName: 要在FTP服务器上面保存文件名

OverWriteRemoteFile: 是否覆盖远程服务器上面同名的文件


UploadFileAsync(string LocalFullPath)


异步上传文件到FTP服务器。

参数说明:

LocalFullPath: 本地带有完整路径的文件名


UploadFileAsync(string LocalFullPath, bool OverWriteRemoteFile)


异步上传文件到FTP服务器。

参数说明:

LocalFullPath: 本地带有完整路径的文件

OverWriteRemoteFile: 是否覆盖远程服务器上面同名的文件


UploadFileAsync(string LocalFullPath, string RemoteFileName)


异步上传文件到FTP服务器。

参数说明:

LocalFullPath: 本地带有完整路径的文件

RemoteFileName: 要在FTP服务器上面保存文件名


UploadFileAsync(string LocalFullPath, string RemoteFileName, bool OverWriteRemoteFile)


异步上传文件到FTP服务器。

参数说明:

LocalFullPath: 本地带有完整路径的文件名

RemoteFileName: 要在FTP服务器上面保存文件名

OverWriteRemoteFile: 是否覆盖远程服务器上面同名的文件


UploadFileAsync(byte[] FileBytes, string RemoteFileName)


异步上传文件到FTP服务器。

参数说明:

FileBytes: 上传的二进制数据

RemoteFileName: 要在FTP服务器上面保存文件名


UploadFileAsync(byte[] FileBytes, string RemoteFileName, bool OverWriteRemoteFile)


异步上传文件到FTP服务器。

参数说明:

FileBytes: 文件二进制内容

RemoteFileName: 要在FTP服务器上面保存文件名

OverWriteRemoteFile: 是否覆盖远程服务器上面同名的文件


ListFilesAndDirectories()


列出FTP服务器上面当前目录的所有文件和目录。


ListFiles()


列出FTP服务器上面当前目录的所有文件。


ListDirectories()


列出FTP服务器上面当前目录的所有的目录。


DirectoryExist(string RemoteDirectoryName)


判断当前目录下指定的子目录是否存在。

参数说明:

RemoteDirectoryName: 指定的目录名


FileExist(string RemoteFileName)


判断一个远程文件是否存在服务器当前目录下面。

参数说明:

RemoteFileName: 远程文件名


DeleteFile(string RemoteFileName)


从FTP服务器上面删除一个文件。

参数说明:

RemoteFileName: 远程文件名


ReName(string RemoteFileName, string NewFileName)


更改一个文件的名称或一个目录的名称。

参数说明:

RemoteFileName: 原始文件或目录名称

NewFileName: 新的文件或目录的名称


CopyFileToAnotherDirectory(string RemoteFile, string DirectoryName)


把当前目录下面的一个文件拷贝到服务器上面另外的目录中,注意,拷贝文件之后,当前工作目录还是文件原来所在的目录。

参数说明:

RemoteFile: 当前目录下的文件名

DirectoryName: 新目录名称。

 说明:如果新目录是当前目录的子目录,则直接指定子目录。如: SubDirectory1/SubDirectory2 ;

 如果新目录不是当前目录的子目录,则必须从根目录一级一级的指定。如:./NewDirectory/SubDirectory1/SubDirectory2


MoveFileToAnotherDirectory(string RemoteFile, string DirectoryName)


把当前目录下面的一个文件移动到服务器上面另外的目录中,注意,移动文件之后,当前工作目录还是文件原来所在的目录。

参数说明:

RemoteFile: 当前目录下的文件名

DirectoryName: 新目录名称。

 说明:如果新目录是当前目录的子目录,则直接指定子目录。如: SubDirectory1/SubDirectory2 ;

 如果新目录不是当前目录的子目录,则必须从根目录一级一级的指定。如:./NewDirectory/SubDirectory1/SubDirectory2


MakeDirectory(string DirectoryName)


在FTP服务器上当前工作目录建立一个子目录。

参数说明:

DirectoryName: 子目录名称


RemoveDirectory(string DirectoryName)


从当前工作目录中删除一个子目录。

参数说明:

DirectoryName: 子目录名称


IsValidPathChars(string DirectoryName)


判断目录名中字符是否合法。

参数说明:

DirectoryName: 目录名称


IsValidFileChars(string FileName)


判断文件名中字符是否合法。

参数说明:

FileName: 文件名称


GotoDirectory(string DirectoryName)


进入一个目录。

参数说明:

DirectoryName:

 新目录的名字。

 说明:如果新目录是当前目录的子目录,则直接指定子目录。如: SubDirectory1/SubDirectory2 ;

 如果新目录不是当前目录的子目录,则必须从根目录一级一级的指定。如:./NewDirectory/SubDirectory1/SubDirectory2


EnterOneSubDirectory(string DirectoryName)


从当前工作目录进入一个子目录。

参数说明:

DirectoryName: 子目录名称


ComeoutDirectory()


从当前工作目录往上一级目录。


 


 

 

公共事件


名称


说明


DownloadProgressChanged


异步下载进度发生改变触发的事件


DownloadDataCompleted


异步下载文件完成之后触发的事件


UploadProgressChanged


异步上传进度发生改变触发的事件


UploadFileCompleted


异步上传文件完成之后触发的事件


 


 

 

其他说明


序号


说明


1


支持代理服务器。

可以显式地给Proxy属性赋值;也可以在构造函数中传递Proxy对象。如果代理需要登录用户和密码,则设置Proxy的Credentials属性,例如:

Proxy.Credentials = new NetworkCredential(UserName, Password)

如果没有代理,则无需给Proxy属性赋值或者在构造函数中无需传递Proxy参数。


2


下载文件和上传文件大小最大受Int32.MaxValue限制,所以最大处理只能是2,147,483,647字节。如果您想处理更大的文件,请自己修改代码中对文件打开和读写操作部分的代码使其适应您的要求。


3


只有在异步上传文件或者异步下载文件的时候,才支持进度百分比触发事件和下载(上传)完成事件。


4


由于服务器未发送文件大小,因此被动 FTP 文件传输总是将进度百分比显示为零。若要显示进度,可以通过重写 GetWebRequest 虚拟方法来将 FTP 连接更改为活动状态。所以,我们在clsFTP类中另外使用内部类MyWebClient

 


5


在列出文件和目录的时候,clsFTP类区分出了所获得的响应数据哪些是文件,哪些是目录。同时,考虑到了FTP服务器上面目录样式为MS DOS和UNIX两种表现形式的不同。


6


支持在FTP服务器上面不同目录之间移动文件和拷贝文件的功能。移动文件的方法比较巧妙,只是拷贝文件所使用的方法不太理想。


 


 


 


 

打包下载 discuz的比较好用

时间: 2024-10-28 15:52:25

asp.net 一个封装比较完整的FTP类_实用技巧的相关文章

ASP.NET封装的SQL数据库访问类_实用技巧

using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Collections; namespace MyCorporation.DepartMent.DataBase { /// <summary> /// 通用数据库类 /// </summary> public class DataBase { private string Co

ASP.NET对SQLServer的通用数据库访问类_实用技巧

本文模仿实现数据库访问的通用类,代码清晰,而且很实用,包括了对数据库的所有的常用的操作. /// <summary> /// 数据库访问通用类 /// </summary> public class SqlHelper { private string connectionString; /// <summary> /// 设定数据库访问字符串 /// </summary> public string ConnectionString { set { con

asp.net无法获取iis目录的问题解决方法_实用技巧

如果你有一个需要偶尔发送邮件的Asp.Net的网站,可能会有代码长的和下面的很像: 复制代码 代码如下: //这是简写,并非实际项目代码public void Send(string from, string to, string subject, string body){    var msgMail = new MailMessage(from, to, subject, body);    msgMail.IsBodyHtml = true;    var server = new Sm

基于ASP.NET MVC的ABP框架入门学习教程_实用技巧

为什么使用ABP我们近几年陆续开发了一些Web应用和桌面应用,需求或简单或复杂,实现或优雅或丑陋.一个基本的事实是:我们只是积累了一些经验或提高了对,NET的熟悉程度. 随着软件开发经验的不断增加,我们发现其实很多工作都是重复机械的,而且随着软件复杂度的不断提升,以往依靠经验来完成一些简单的增删改查的做法已经行不通了.特别是用户的要求越来越高,希望添加的功能越来多,目前这种开发模式,已经捉襟见肘.我很难想象如何在现有的模式下进行多系统的持续集成并添加一些新的特性. 开发一个系统时,我们不可避免的

Asp.net的应用程序对象和页面生存周期_实用技巧

IIS在接到一个新的http请求后,最终会调用asp.net_isapi.dll的 ISAPI扩展(特指IIS6.0环境,iis7.0的应用程序池默认为集成方式,相对有所变化),然后传递到httpRuntime Pipe(http运行时管道),Asp.Net这时才开始运行(即HttpRunTime是Asp.Net真正的入口),HttpRunTime会为每 个asp.net应用自动创建一个HttpApplication的实例,而该实例中又包含以下属性: 注1 Application -->相当于传

封装的一个asp.net验证码类_实用技巧

第一个反映是验证码的这些属性是否可以设置(也就是说是封装成一个类,然后以暴露公有属性和方法的方式来使用的,还是在直接在一般处理程序中实现了验证码的生成到输出),结果比较可惜,是后者...... 里面的算法感觉挺不错,至少对于我这种对算法几乎是不懂的人来说是这样,于是想到去封装一下她然后无耻地纳入自己的类库中去^^ old原文件如下:点击下载 首先分析一下这份代码中的不足(自己觉得的): 1.面向过程式的编程,如果要修改验证码的属性,例如修改字体的大小.背景颜色等细节的东西,需要去一般处理程序中找

在ASP.NET Core中实现一个Token base的身份认证实例_实用技巧

以前在web端的身份认证都是基于Cookie | Session的身份认证, 在没有更多的终端出现之前,这样做也没有什么问题,但在Web API时代,你所需要面对的就不止是浏览器了,还有各种客户端,这样就有了一个问题,这些客户端是不知道cookie是什么鬼的. (cookie其实是浏览器搞出来的小猫腻,用来保持会话的,但HTTP本身是无状态的, 各种客户端能提供的无非也就是HTTP操作的API) 而基于Token的身份认证就是应对这种变化而生的,它更开放,安全性也更高. 基于Token的身份认证

asp实现一个统计当前在线用户的解决方案_应用技巧

一个统计当前在线用户的解决方案 在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数.游客人数.会员人数.在线用户列表,包括游客.会员和管理员(如果是游客,则自动生成游客的ID,如果是会员,则显示会员姓名).因为它要求有实时性,则首先我将用global.asa解决的想法pass掉. 问题的关键是如何判断用户已经离开,和当用户离开时如何执行一个文件或一个函数. 经过和网上一些朋友的探讨,终于解决了这个问题. 解决的原理为:编写一个通用页面,所谓的

创建第一个ASP.NET应用程序(第1节)_实用技巧

这一节我们一起学习创建一个根据用户输入来显示相应的欢迎信息的页面,希望小伙伴们可以和我一起动手操作 学习内容:第一步,创建ASP.NET程序 1.运行 Visual Studio 2008.在菜单栏中选择"文件" →"新建" →"项目"命令,在弹出的"新建项目"的对话框中,选择左侧的"其他项目类型"树形目录中的"Visual Studio 解决方案"选项,在右边"Visual