一:简介

FluentFTP 是一个完全托管的 .NET 和 .NET Standard 的 FTP 和 FTPS 库,针对速度进行了优化。

它提供了广泛的 FTP 命令、文件上传/下载、SSL/TLS 连接、自动目录列表解析、文件哈希/校验和、

文件权限/CHMOD、FTP 代理、FXP 传输、UTF-8 支持、异步/等待支持、Powershell 支持和更多的。

它完全用 C# 编写,没有外部依赖项。FluentFTP 是在宽松的 MIT 许可证下发布的,因此它可以在专有和免费/开源应用程序中使用。

二:特征

完全支持FTP、FXP、FTPS(基于 SSL 的 FTP)、带有客户端证书的FTPS 和带有 CCC的 FTPS (用于 FTP 防火墙)

完全递归的目录列表和目录删除(手动递归和服务器端递归)

通过进度跟踪轻松从服务器上传和下载文件

使用简单的同步模式从服务器轻松上传和下载目录

使用 FXP 协议轻松地将文件或文件夹直接从一台服务器传输到另一台服务器

使用基于规则的白名单和黑名单有条件地传输文件

自动验证文件的哈希并在哈希不匹配时重试传输

多文件传输的可配置错误处理(忽略/中止/抛出)

使用标准流轻松地从服务器读取和写入文件数据

创建、追加、读取、写入、重命名、移动和删除文件和文件夹

递归删除文件夹及其所有内容

获取文件/文件夹信息(存在、大小、安全标志、修改日期/时间)

获取和设置文件权限(所有者、组、其他)

绝对或相对路径(相对于“工作目录”)

使用哈希/校验和(MD5、CRC32、SHA-1、SHA-256、SHA-512)将本地文件与远程文件进行比较

取消引用符号链接以计算链接的文件/文件夹

通过可配置的速度限制限制上传和下载

三:异步支持:

对所有操作使用async/的同步和异步方法await

.NET 4.0 及以下使用模式的异步方法IAsyncResult(Begin*/End*)

所有异步方法都可以通过传递一个CancellationToken

所有异步方法都遵循ReadTimeout并在超时时自动取消

通过克隆文件传输的 FTP 控制连接来提高线程安全性(可选)

实现自己的内部锁定以保持事务同步

四:使用

使用Nuget 搜索FluentFtp

使用FluentFtp封装好的FtpClient实现上传下载

public  class FtpHelper{FtpClient _client;public FtpHelper(){_client = new FtpClient(CommonConst.Url);_client.Credentials = new System.Net.NetworkCredential(CommonConst.UserName, CommonConst.Pwd);_client.Connect();}/// <summary>/// 上传ftp/// </summary>/// <param name="originalAddress"></param>/// <param name="destinationAddress"></param>/// <returns></returns>public bool UpLoadFile(string originalAddress, string destinationAddress){if (_client.UploadFile(originalAddress, destinationAddress, FtpRemoteExists.Overwrite, true) == FtpStatus.Success){return true;}return false;}/// <summary>/// 以流的方式 ftp/// </summary>/// <param name="fileStream"></param>/// <param name="destinationAddress"></param>/// <returns></returns>public bool UpLoad(Stream fileStream, string destinationAddress){if (_client.Upload(fileStream, destinationAddress, FtpRemoteExists.Overwrite, true) == FtpStatus.Success){return true;}return false;}/// <summary>/// 下载ftp/// </summary>/// <param name="originalAddress"></param>/// <param name="destinationAddress"></param>/// <returns></returns>public bool DownloadFile(string originalAddress, string destinationAddress){if (_client.DownloadFile(originalAddress, destinationAddress) == FtpStatus.Success){return true;}return false;}/// <summary>/// 以流的方式下载/// </summary>/// <param name="outStream"></param>/// <param name="destinationAddress"></param>/// <returns></returns>public bool DownloadStream(Stream outStream, string destinationAddress){if (_client.Download(outStream, destinationAddress) == true){return true;}return false;}}

最后大家如果喜欢我的文章,还麻烦给个关注, 希望net生态圈越来越好!

c#使用FluentFtp实现一行代码实现ftp上传下载等相关推荐

  1. 高可用的Spring FTP上传下载工具类(已解决上传过程常见问题)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:宇的季节 cnblogs.com/chenkeyu/p/80 ...

  2. java ftp上传文件_jaVA使用FTP上传下载文件的问题

    为了实现 FTP上传下载,大概试了两个方法 sun.net.ftp.FtpClient org.apache.commons.net 一开始使用sun.net.ftp.FtpClient,结果发现唯一 ...

  3. java实现的FTP上传下载客户端

    org.apache.commons.net.ftp.*中的FTPClient类实现的FTP上传下载功能: 需导入Apache的commos-net的jar包,若导入的是1.4版本的包,则FTPFil ...

  4. FTP上传下载及FTP不支持中文目录解决方法

    直接上代码: ftp上传文件. /** * 上传文件到ftp服务器 * @param host ftp服务器ip地址 * @param port ftp服务器端口号 * @param username ...

  5. bat定时进行ftp上传下载文件

    bat进行ftp上传下载文件 参考文章: https://blog.csdn.net/yongzai666/article/details/86488761 背景: 由于公司某个系统原本硬盘损坏 , ...

  6. ftp. java. jdk_java实现ftp上传下载(jdk1.7以下)

    java实现ftp上传下载(jdk1.7以下)完整代码,复制可用 FTP实现代码: package com.util; import java.io.File; import java.io.File ...

  7. ACTIVEX实现大文件FTP上传下载---上

    ACTIVEX实现大文件FTP上传 在Windows 操作系统下,有一个重要的机制,就是OLE ,就是可以让某个应用程序(OLE Controller)访问其它应用程序(OLE Server)所提供的 ...

  8. ftp上传-下载文件通用工具类,已实测

    话不多说直接上代码 package com.springboot.demo.utils;import lombok.extern.slf4j.Slf4j; import org.apache.comm ...

  9. linux curl 命令 http请求、下载文件、ftp上传下载

    1. curl 命令简介 cURL(CommandLine Uniform Resource Locator),是一个利用 URL 语法,在命令行终端下使用的网络请求工具,支持 HTTP.HTTPS. ...

最新文章

  1. 设计模式解析(五)——几种设计模式之Facade和Adapter
  2. 【AHOI2005】病毒检测
  3. 要找到现阶段最适合自己的方法
  4. Linux文件操作命令
  5. [css] 你对伪类了解多少?分为几大类?
  6. JavaScript玩转机器学习:保存并加载 tf.Model
  7. 为什么网络安全领域需要更多的女性?
  8. Java的static关键字使用
  9. 搭建基于hyperledger fabric的联盟社区(六) --搭建node.js服务器
  10. C++ 标准库的双向链表
  11. 使用python绘制标准心形线
  12. 七年级认识计算机软件教案,七年级信息技术第三单元 第一节认识计算机网络教案.doc...
  13. sentencepiece原理与实践
  14. 2019年腾讯、京东、 滴滴、讯飞等等互联网公司都在裁员,给你什么启示
  15. opencv在大图片上贴小图
  16. Stairway to SQL Server Security Level 3: Principals and Securables - SQLServerCentral
  17. 我的世界服务器娘怎么修改配置,转【教学】Pixelmon配置文件修改指南
  18. JS鼠标点击自动选中点击元素中的文字
  19. 你还不清楚某个系统文件的作用吗?Windows系统文件详解【大全】
  20. 教你用笔记本电脑VMware虚拟机挖Polar Chain

热门文章

  1. 带你剖析WebGis的世界奥秘----Geojson数据加载(高级)
  2. hdu 5441 (并查集)
  3. ​【v2.x OGE-example 第二节】 实体参数
  4. C#摄像头实现拍照功能的简单代码示例
  5. C#后台,执行前台js 脚本
  6. JAVA编程经验汇总 (载)
  7. c# 实现MD5,SHA1,SHA256,SHA512等常用加密算法
  8. mysql读写分离和分布式_MySQL主从复制与读写分离
  9. python3.7 安装cx_Freeze
  10. |洛谷|DFS|P1101 单词方阵