C#调用FluentFTP将文件批量上传到ftp服务器(续)

  继续给上次编写的FluentFTP测试项目添加功能,主要包括下载文件、浏览下级文件夹、返回上级文件夹功能。
  首先是下载FTP服务器中的文件功能,主要是调用FtpClient类中的DownloadFile函数,指定本地目的路径和FTP服务器中的源文件路径即可。示意图及下载结果如下所示:
在这里插入图片描述在这里插入图片描述
  接下来是浏览下级文件夹功能,主要还是调用GetListing函数获取指定文件夹内的文件清单。这个可以和下载文件合起来使用。双击测试项目中列出的FTP服务器文件清单,如果是文件,则提示用户下载文件,如果是文件夹,则显示选中文件夹内的文件清单。
  这里稍微麻烦的是如果当前目录不是根目录(即当前工作目录不为‘/’),则应提供返回上一级功能,使用其它ftp软件时该功能是标准功能。简单一点的话在文件列表旁边提供返回上一级按钮或菜单,用户点击时可以查看当前文件夹上一级目录的内容。也可以把上一级目录作为一个文件夹放在文件列表中。本文中采用后者实现返回上一级功能。
  显示文件清单用的ListView控件,每个ListViewItem关联了一个FtpListItem对象,在界面中只显示每个对象的类型和名称。如果需要下载文件或者浏览文件夹内容,则需要读取ListViewItem关联的FtpListItem对象中的FullName属性后再进行下一步操作。

  实现返回上一级功能时需要在ListView控件中新增一条记录并关联FtpListItem对象,但是在创建过程中发现无法指定FtpListItem对象的Fullname属性,该属性为只读,FtpListItem的构造函数中也只能指定Name属性。应该再定义一个类保存FtpListItem的Name、FullName和Type属性,其它FtpListItem属性暂不需要保存,或者是在ListView控件中新增一列保存FullName值,本文测试时嫌麻烦,还是用的FtpListItem对象,将上一级文件夹的目录保存在Name属性中,调用GetListing时检查如果FullName为空则使用Name值。
  同时FtpListItem返回的文件列表没有排序,文件和文件夹混杂在一起,为便于查看和点击,最好排一下序。
  浏览下级文件夹、返回上级文件夹的功能示意图如下,从根目录双击文件夹浏览下一级内容,然后双击文件清单最上级的文件夹返回上一级目录。

在这里插入图片描述

参考文献:
[1]https://github.com/robinrodricks/FluentFTP
[2]https://github.com/robinrodricks/FluentFTP/wiki/Classes

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在C#中将文件从本地计算机剪切到FTP服务器上,可以使用FtpWebRequest和FtpWebResponse类。以下是一个简单的代码示例: ```csharp using System; using System.IO; using System.Net; class FtpMove { static void Main() { string serverUri = "ftp://ftp.example.com/remote/path/file.txt"; string localPath = @"C:\local\path\file.txt"; string username = "username"; string password = "password"; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri); request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential(username, password); using (Stream fileStream = File.OpenRead(localPath)) using (Stream ftpStream = request.GetRequestStream()) { fileStream.CopyTo(ftpStream); } File.Delete(localPath); Console.WriteLine("File moved to FTP server."); } } ``` 在上面的示例中,我们首先创建一个FtpWebRequest对象并设置其Method属性为WebRequestMethods.Ftp.UploadFile以指定我们要上传文件。然后,我们使用NetworkCredential对象设置FTP服务器的用户名和密码。接下来,我们使用File.OpenRead方法获取本地文件的流,并使用GetRequestStream方法获取FTP服务器上文件的流。然后,我们使用CopyTo方法将本地文件的流复制到FTP服务器上文件的流,并使用File.Delete方法删除本地文件。 请注意,上面的代码示例仅演示了如何将文件从本地计算机剪切到FTP服务器上。如果要将文件从FTP服务器上剪切到本地计算机,请使用WebRequestMethods.Ftp.DownloadFile作为Method属性的值,并使用GetResponse方法获取FtpWebResponse对象,并使用GetResponseStream方法获取FTP服务器上文件的流。然后,使用File.WriteAllBytes或其他方法将该流写入本地文件,并使用FtpWebRequest的Method属性设置为WebRequestMethods.Ftp.DeleteFile来删除FTP服务器上的文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值