LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C# 使用 FluentFTP 基础

admin
2024年11月9日 15:42 本文热度 209

前言

FTP(File Transfer Protocol)是一种文件传输协议 ,用于网络上进行文件传输与存储空间。在编程中,我们需要从FTP服务器下载文件、查看、删除或将本地文件上传到服务器上。《C# 实现FTP的上传与下载操作》介绍了使用 FtpWebRequest 实现方式。本文简述 FluentFTP 动态库基础。

FluentFTP

1、概述

FluentFTP 是一个完全托管的FTP和FTPS客户端动态库,适用于.NET,优化了速度。支持FTP和FTPS协议,提供了上传、下载、删除、重命名等操作。而且支持断点续传、异步、ASCII和二进制模式传输、代理服务器等。

2、附录

https://github.com/robinrodricks/FluentFTP
3、使用要求
通过 NuGet 包管理器引用 FluentFTP 库,或通过引用FluentFTP动态库文件。
// 动态库文件FluentFTP.dll
4、常用属性
属性描述
HostFTP 地址
Port端口,默认:21
Credentials认证信息,一般是用户账号和密码
IsConnected是否已建立连接,已建立连接可能未认证
IsAuthenticated是否已认证,建立在IsConnected之上
Status状态
Encoding编码格式,一般采用UTF-8
IsEncrypted表示当前是否在Ftps协议下使用
ValidateCertificate证书验证事件,一般采用Ftps会用到
Config配置对象
下表为 Config   常用的几个配置

属性描述
DataConnectionType设置连接方式,一般主动模式建议用AutoActive,被动模式建议用AutoPassive
UploadDataType上传所使用的传输模式
DownloadDataType上传所使用的传输模式
DownloadZeroByteFiles0字节的文件是否需要被下载
DownloadRateLimit下载速度限制,0表示不限制,单位kb
UploadRateLimit上传速度限制,0表示不限制,单位kb
RetryAttempts当上传或者下载失败是,重新尝试的次数
TimeZoneFtp服务器时区,比如北京市UTC+8,所以写8表示北京时间
LocalTimeZone本地时区,格式同TimeZone
EncryptionMode加密模式,一般采用Ftps会用到
SslProtocols加密协议,一般采用Ftps会用到

5、常用方法

5.1、上传方法

方法描述
UploadBytes上传文件,文件格式是byte数组
UploadDirectory上传整个本地目录到服务器
UploadFile上传文件,文件格式是本地文件路径
UploadFiles上传多个本地文件到服务器指定目录
UploadStream上传文件,文件格式是流

5.2、下载方法

方法描述
DownloadBytes下载文件,内容保存在指定的byte数组中
DownloadDirectory下载远程目录至本地指定目录中
DownloadFile下载文件,并保存在指定文件中
DownloadFiles下载多个文件,并保存在指定目录下
DownloadStream下载文件,内容保存在指定流中

5.3、目录方法

方法描述
CreateDirectory创建目录
DeleteDirectory删除目录(及文件、子目录)
DirectoryExists判断目录是否已存在
GetListing获取指定目录(或者当前工作目录)下的所有文件及子目录
GetWorkingDirectory获取当前的工作目录
SetWorkingDirectory设置当前的工作目录
IsRoot当前工作目录是否是根目录
MoveDirectory移动远程目录到指定位置
Rename重命名,建议使用MoveDirectory代替
EmptyDirectory清空指定目录

5.4、其他方法

方法描述
AutoDetect自动发现FTP连接的设置并且返回这些连接的配置文件
AutoConnect自动发现FTP连接的设置并且使用第一个配置去连接服务器
Connect开始连接
Disconnect断开连接

5.5、文件操作

方法描述
CompareFile本地与远程文件进行比较,默认不会下载文件,直接比较文件大小和校验hash散列值
DeleteFile删除远程文件
FileExists远程文件是否存在
GetChecksum获取远程文件的校验hash散列值
GetFileSize获取远程文件大小
MoveFile移动文件
Rename重命名文件,建议使用MoveFile代替

代码示例

//同步模式FtpClient ftpClient = new FtpClient();// 端口ftpClient.Port = 21;// 地址ftpClient.Host = "127.0.0.1";// 认证信息,一般是用户账号和密码ftpClient.Credentials = new System.Net.NetworkCredential("ftp", "ftp123456");//设置编码ftpClient.Encoding = Encoding.UTF8;//Ftp被动模式ftpClient.Config.DataConnectionType = FtpDataConnectionType.AutoPassive;//开始连接ftpClient.Connect();//设置工作目录ftpClient.SetWorkingDirectory("Picture");//上传 ftpClient.UploadFile("ProductImage.jpg", "ProductImage.jpg");//下载ftpClient.DownloadFile("ProductImage.jpg""ProductImage.jpg");
 //  using (var fluentClient = new FtpClient("127.0.0.1")) {     // 认证信息     fluentClient.Credentials = new NetworkCredential("ftp", "ftp123456");     // 开始连接     fluentClient.Connect();     // 将文件保存到本地     using (var fileStream = File.OpenWrite(@"D:\20241005.mp4"))     {         // 下载文件,内容保存在指定流中         fluentClient.DownloadStream(fileStream, "/video/orders/20241005.mp4");     }     // 断开连接     fluentClient.Disconnect(); }
// Fluent 40版本提供了一个异步类 AsyncFtpClient 可以实现异步模式操作
//异步模式var asyncClient = new AsyncFtpClient("127.0.0.1", "ftpuser", "ftp123456", 21);//设置编码ftpClient.Encoding = Encoding.UTF8;//Ftp被动模式ftpClient.Config.DataConnectionType = FtpDataConnectionType.AutoPassive;//开始连接await ftpClient.Connect();//设置工作目录await ftpClient.SetWorkingDirectory("video/orders");//下载await ftpClient.DownloadFile("20241005.mp4", "20241005.mp4");

小结

以上主要描述了FluentFTP 动态库的基础内容,了解 FluentFTP 常用属性与方法,我们可以根据这些方法与属性实现 FTP 相关的操作。


该文章在 2024/11/11 19:25:10 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved