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的比较好用

(0)

相关推荐

  • C#实现自定义FTP操作封装类实例

    本文实例讲述了C#实现自定义FTP操作封装类.分享给大家供大家参考.具体如下: 这个C#类封装了FTP的常用操作,包括连接ftp服务器.列表服务器上的目录和文件,从ftp下载文件,上传文件到ftp服务器等等 using System; using System.Text; using System.IO; namespace DotNet.Utilities { public class FTPOperater { #region 属性 private FTPClient ftp; /// <s

  • 分享用于操作FTP的客户端C#类

    这是一个用于操作FTP的客户端C#类,类已经封装好了各种常用的Ftp操作方法,调用非常简单,你不需要关心ftp连接和操作的细节,只要调用这个类里的相关方法就可以了. using System; using System.Net; using System.IO; using System.Text; using System.Net.Sockets; using System.Threading; namespace DotNet.Utilities { public class FTPClie

  • c#操作ftp类分享

    复制代码 代码如下: class ftp{    private string host = null;    private string user = null;    private string pass = null;    private FtpWebRequest ftpRequest = null;    private FtpWebResponse ftpResponse = null;    private Stream ftpStream = null;    privat

  • C#版ftp方法实现类的代码

    /*  FTPFactory.cs  Better view with tab space=4  Written by Jaimon Mathew (jaimonmathew@rediffmail.com)  Rolander,Dan (Dan.Rolander@marriott.com) has modified the  download  method to cope with file name with path information. He also  provided  the 

  • FTPClientHelper辅助类 实现文件上传,目录操作,下载等操作

    文档说明 本文档使用Socket通信方式来实现ftp文件的上传下载等命令的执行 1.基本介绍 由于最近的项目是客户端的程序,需要将客户端的图片文件[切图]-[打包]-[ftp上传],现在就差最后一步了,慢慢的把这些小功能实现了,合并到一起就是一个大功能了,所以一个业务需要拆分的很小很小才可以看清楚,这个项目实际需要用到哪些知识点,下面介绍一下ftp上传的命令 ftp命令的参考链接:http://www.jb51.net/article/12199.htm ftp适合小文件上传 对带宽要求要求较高

  • C#操作ftp类完整实例

    本文实例讲述了C#操作ftp类.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net; using System.Globalization; namespace FtpTest1 { public class FtpWeb { string ftpServerIP; string ftpRemotePath; st

  • 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(".")); //

  • ASP中一个用VBScript写的随机数类

    外国人写的一个class,这么一点小小的应用,除非有特殊需求,还没有必要模块化. 用asp产生一个随机数. <%  ''**************************************************************************  '' CLASS: cRandom  '' Calls randomize to seed the random number generator.  '' Provides functions for returning ra

  • Element Plus组件Form表单Table表格二次封装的完整过程

    目录 前言 Form表单的封装 简述 正常的使用 开始封装① 开始封装② 开始封装③ 开始封装④ 完整封装代码⑤ 配置项类型文件 配置项文件 form表单组件文件 page-search组件文件 role页面组件文件 结语 Table表格的封装 简述 正常使用 开始封装① 开始封装② 开始封装③ 完整封装代码④ 配置项类型文件 配置项文件 table表单组件文件 page-table组件文件 user页面组件文件 结语 前言 直至今天,看了一下别人写的代码,才发现以前自己写的代码太垃圾,所以在这

  • 一个简洁实用的PHP缓存类完整实例

    本文完整描述了一个简洁实用的PHP缓存类,可用来检查缓存文件是否在设置更新时间之内.清除缓存文件.根据当前动态文件生成缓存文件名.连续创建目录.缓存文件输出静态等功能.对于采用PHP开发CMS系统来说,离不开对缓存的处理,合理利用好缓存可有效的提高程序执行效率. php缓存类文件完整代码如下: <?php /* * 缓存类 cache */ class cache { //缓存目录 var $cacheRoot = "./cache/"; //缓存更新时间秒数,0为不缓存 var

  • 奉献出一个封装的curl函数 便于调用(抓数据专用)

    奉献出一个封装的curl函数,便于调用 复制代码 代码如下: function curl($url, $ifpost = 0, $datafields = '', $cookiefile = '', $v = false) { $header = array("Connection: Keep-Alive","Accept: text/html, application/xhtml+xml, */*", "Pragma: no-cache", &

  • php封装的表单验证类完整实例

    本文实例讲述了php封装的表单验证类.分享给大家供大家参考,具体如下: <?php //封装一个表单验证类 //中文验证.邮箱验证.电话号码.手机.QQ.身份证.(由字母.数字.下划线组成,不能以数字开头) header('content-type:text/html;charset=utf-8'); class Form{ /* //中文验证的方法 //参数:$str,$num1,$num2 //返回值:匹配成功返回匹配的次数 */ public function checkChina($st

  • php封装的图片(缩略图)处理类完整实例

    本文实例讲述了php封装的图片(缩略图)处理类.分享给大家供大家参考,具体如下: <?php //图片处理工具类 class Image{ //属性 private $thumb_width; //缩略图的宽 private $thumb_height; //错误属性 public $thumb_error; //构造方法 public function __construct($width = 0,$height = 0){ $this->thumb_width = ($width == 0

  • PHP封装的XML简单操作类完整实例

    本文实例讲述了PHP封装的XML简单操作类.分享给大家供大家参考,具体如下: xml_dom.php封装类文件: <?php /** * Class xml_dom * nodeType: 1 XML_ELEMENT_NODE(元素类型) 2 XML_ATTRIBUTE_NODE 3 XML_TEXT_NODE 4 XML_CDATA_SECTION_NODE 5 XML_ENTITY_REFERENCE_NODE 6 XML_ENTITY_NODE 7 XML_PROCESSING_INSTR

  • PHP封装的完整分页类示例

    本文实例讲述了PHP封装的完整分页类.分享给大家供大家参考,具体如下: <?php class pageclass{ private $total; //总记录 private $pagesize; //每页显示多少条 private $limit; //limit private $page; //当前页 private $pagenum; //总页码 private $url; //地址 public function __construct($_total,$_pagesize,$page

  • 开发一个封装iframe的vue组件

    VUE的基本组成单元,我看应该是组件.用VUE开发前端项目,就是开发一个个组件,然后搭积木一样,将项目搭建出来.组件包含在页面,或者是更大的组件里面.在这里,组件与页面的界限,好像并不明显.事实上,对于单页应用,只有一个页面. 组件的好处,一是可以加强复用:二是能够将特定功能封装,利于调用:三是由于职责分明,组件高内聚,组件间低耦合,利于系统功能的优化.扩展和维护.好处多多. 开发组件,主要有2部分内容: 1.组件内部逻辑 2.外部接口 由于我这两天弄的组件,里面包含有一个<iframe>,那

随机推荐