??上篇文章介绍了在Windows Server 2008上搭建FTP服务,本文测试使用C#调用FluentFTP将文件批量上传到ftp服务器。 ??FluentFTP是由C#开发的开源FTP和FTPS库,其开源地址见参考文献1,关于FluentFTP详见其在GitHub中的首页介绍。本文学习参考文献2中的示例代码,并实现简单的文件批量上传功能。 ??在Visual Studio中新建Winform项目,添加FluentFTP包,项目主要使用FluentFTP中的FtpClient类连接并操作FTP库。 ??本项目主要实现四块内容;
- 创建FtpClient对象。主要指定服务器地址、端口、连接用户名和密码,参考文献2中的服务器地址使用的是“ftp://server”的形式,本文测试的时候直接给的服务器IP,也能正常连接。除此之外,还指定了连接方式,参考文献2中使用的是PASV被动模式,本文使用的是PORT主动模式(这两种模式的区别请见参考文献5,本文使用PORT仅仅是为了试试和PASV的不同);
- 连接FTP服务器。调用Connect函数连接FTP服务器,这里需要说明的请见参考文献2,主要是为防止中文乱码,对编码方式进行了特别设置,代码见下面(直接用的参考文献2中的代码);
var result = m_ftpClient.Execute("OPTS UTF8 ON");
if (!result.Code.Equals("200") && !result.Code.Equals("202"))
m_ftpClient.Encoding = Encoding.GetEncoding("ISO-8859-1");
- 获取ftp当前工作目录中的文件清单。调用FtpClient类中的GetListing函数获取当前工作目录中的文件清单,包括文件和文件夹。该函数返回FtpListItem集合,每个FtpListItem对象对应文件夹、文件或链接,具体类型保存在Type属性中。除此之外,该类中Name属性保存的是不包含路径的名称,而FullName中包含带全路径的名称;
- 批量上传文件。FtpClient主要支持上传单个文件(UploadFile)和整个文件夹(UploadDirectory),同时支持同步上传和异步上传。本文中使用UploadDirectory批量上传整个文件夹中的文件。
??基于参考文献2中的示例代码,编写了批量上传文件测试程序,实现了上述四块内容。程序运行时的界面如下图所示(程序里面暂时写死了将文件上传到音乐文件夹中)。 ??登录FTP服务器并进入FTP服务配置的文件夹中,可以看到已经将音乐文件上传到音乐文件夹中。 ??本文的程序仅是测试了客户端连接ftp服务器、批量上传文件功能,还未实现逐级浏览ftp服务文件、下载文件等功能。后续还会继续学习FluentFTP的用户,逐步完善测试程序的功能。
参考文献 [1]https://github.com/robinrodricks/FluentFTP [2]https://www.cnblogs.com/abnerwong/p/14179159.html [3]https://github.com/robinrodricks/FluentFTP/wiki [4]https://www.sohu.com/a/440334572_100016227 [5]https://blog.csdn.net/f0rd_/article/details/102891643
|