当前位置: 首页 > article >正文

开源FluentFTP实操,操控FTP文件

概述:通过FluentFTP库,轻松在.NET中实现FTP功能。支持判断、创建、删除文件夹,判断文件是否存在,实现上传、下载和删除文件。简便而强大的FTP操作,提升文件传输效率。

在.NET中,使用FluentFTP库可以方便地实现FTP的相关功能。以下是判断文件夹是否存在、文件夹的创建和删除、判断文件是否存在、文件的上传、下载和删除的基本操作。

FluentFTP是一个基于C#的开源FTP操作库,通过其简洁的API设计,使FTP操作更加易用。提供了丰富的功能,包括上传、下载、创建、删除文件和文件夹等。在.NET平台上,特别适用于处理FTP文件传输需求。

目录

1.安装

2.基本使用工具类


1.安装

在Visual Studio中,NuGet包管理器安装FluentFTP。在包管理器控制台中执行以下命令:

Install-Package FluentFTP

2.基本使用工具类

public class FluentFTPUtils
    {
        #region 属性与构造函数
        /// <summary>
        /// IP地址
        /// </summary>
        public string IpAddr { get; set; }
        /// <summary>
        /// 相对路径
        /// </summary>
        public string RelatePath { get; set; }
        /// <summary>
        /// 端口号
        /// </summary>
        public int Port { get; set; }
        /// <summary>
        /// 用户名
        /// </summary>
        public string UserName { get; set; }
        /// <summary>
        /// 密码
        /// </summary>
        public string Password { get; set; }
        public FluentFTPUtils()
        {
        }
        public FluentFTPUtils(string ipAddr, int port, string userName, string password, string relatePath)
        {
            this.IpAddr = ipAddr;
            this.Port = port;
            this.UserName = userName;
            this.Password = password;
            this.RelatePath = relatePath;
        }
        #endregion
        #region 方法
        public FtpListItem[] ListDir()
        {
            FtpListItem[] lists;
            using (var ftpClient = new FtpClient(this.IpAddr, this.UserName, this.Password, this.Port))
            {
                ftpClient.Connect();
                ftpClient.SetWorkingDirectory(this.RelatePath);
                lists = ftpClient.GetListing();
            }
            return lists;
        }
        public void UpLoad(string dir, string file, out bool isOk)
        {
            isOk = false;
            FileInfo fi = new FileInfo(file);
            using (FileStream fs = fi.OpenRead())
            {
                //long length = fs.Length;
                using (var ftpClient = new FtpClient(this.IpAddr, this.UserName, this.Password, this.Port))
                {
                    ftpClient.Connect();
                    ftpClient.SetWorkingDirectory(this.RelatePath);
                    string remotePath = dir + "/" + Path.GetFileName(file);
                    var ftpRemodeExistsMode = file.EndsWith(".txt") ? FtpRemoteExists.Overwrite : FtpRemoteExists.Skip;
                    FtpStatus status = ftpClient.UploadStream(fs, remotePath, ftpRemodeExistsMode, true);
                    isOk = status == FtpStatus.Success;
                }
            }
        }
        /// <summary>
        /// 上传多个文件
        /// </summary>
        /// <param name="files"></param>
        /// <param name="isOk"></param>
        public void UpLoad(string dir, string[] files, out bool isOk)
        {
            isOk = false;
            if (CheckDirIsExists(dir))
            {
                foreach (var file in files)
                {
                    UpLoad(dir, file, out isOk);
                }
            }
        }
        private bool CheckDirIsExists(string dir)
        {
            bool flag = false;
            using (var ftpClient = new FtpClient(this.IpAddr, this.UserName, this.Password, this.Port))
            {
                ftpClient.Connect();
                ftpClient.SetWorkingDirectory(this.RelatePath);
                flag = ftpClient.DirectoryExists(dir);
                if (!flag)
                {
                    flag = ftpClient.CreateDirectory(dir);
                }
            }
            return flag;
        }
        /// <summary>
        /// 下载ftp
        /// </summary>
        /// <param name="localAddress"></param>
        /// <param name="remoteAddress"></param>
        /// <returns></returns>
        public bool DownloadFile(string localAddress, string remoteAddress)
        {
            using (var ftpClient = new FtpClient(this.IpAddr, this.UserName, this.Password, this.Port))
            {
                ftpClient.SetWorkingDirectory("/");
                ftpClient.Connect();
                if (ftpClient.DownloadFile(localAddress, remoteAddress) == FtpStatus.Success)
                {
                    return true;
                }
                return false;
            }
        }
        #endregion
    }

FluentFTP库实现FTP相关功能的基本操作。


http://www.kler.cn/a/372224.html

相关文章:

  • Openwrt @ rk3568平台 固件编译实践(二)- ledeWRT版本
  • 洛谷P1617————数字转英文
  • 大数据架构设计:数据分层治理的全景指南
  • uniapp打包到宝塔并发布
  • touch详讲
  • 【CPU】页表项和叶子表项(个人草稿)
  • SpringBoot最佳实践之 - 使用AOP记录操作日志
  • 电子电气架构 --- 汽车以太网概述
  • 论文翻译:ICLR 2024.DETECTING PRETRAINING DATA FROM LARGE LANGUAGE MODELS
  • 免费PDF页面提取小工具
  • 《自动驾驶技术的深度思考:安全与伦理的挑战》
  • ubuntu22安装搜狗输入法不能输入中文
  • Java 代码优化 修饰器模式(Decorator Pattern)
  • 搭建 mongodb 副本集,很详细
  • 【MySQL】C语言连接MySQL数据库3——事务操作和错误处理API
  • 电子电气架构 --- 电气系统工程
  • 【MySQL】 运维篇—备份与恢复:备份策略与方法
  • 商场应急响应:SpringBoot技术优化
  • 排序算法在最坏情况下的性能差异:深入分析
  • 音视频如何轻松转换?来看看这四款工具:
  • Android Html.fromHtml和buildSpannedString用途和实现方式
  • 探索C嘎嘎:初步接触STL
  • 【SQL】SQL函数
  • 鸿蒙生态崛起:开发者的机遇与挑战
  • 多IP访问网站
  • openjdk17 C++源码是怎么给java字段赋值的