C# FTP下载 采用Ssh.Net方式

这篇具有很好参考价值的文章主要介绍了C# FTP下载 采用Ssh.Net方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不要再用FTPClient了

nuget下载Ssh.Net

然后代码如下:

/// <summary>
  /// SFTP操作类
  /// </summary>
  public class SFTPHelper
  {
    #region 字段或属性
    private SftpClient sftp;
    /// <summary>
    /// SFTP连接状态
    /// </summary>
    public bool Connected { get { return sftp.IsConnected; } }
    #endregion

    #region 构造
    /// <summary>
    /// 构造
    /// </summary>
    /// <param name="ip">IP</param>
    /// <param name="port">端口</param>
    /// <param name="user">用户名</param>
    /// <param name="pwd">密码</param>
    public SFTPHelper(string ip, string port, string user, string pwd)
    {
      sftp = new SftpClient(ip, Int32.Parse(port), user, pwd);
    }
    #endregion

    #region 连接SFTP
    /// <summary>
    /// 连接SFTP
    /// </summary>
    /// <returns>true成功</returns>
    public bool Connect()
    {
      try
      {
        if (!Connected)
        {
          sftp.Connect();
        }
        return true;
      }
      catch (Exception ex)
      {
        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("连接SFTP失败,原因:{0}", ex.Message));
        throw new Exception(string.Format("连接SFTP失败,原因:{0}", ex.Message));
      }
    }
    #endregion

    #region 断开SFTP
    /// <summary>
    /// 断开SFTP
    /// </summary> 
    public void Disconnect()
    {
      try
      {
        if (sftp != null && Connected)
        {
          sftp.Disconnect();
        }
      }
      catch (Exception ex)
      {
        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("断开SFTP失败,原因:{0}", ex.Message));
        throw new Exception(string.Format("断开SFTP失败,原因:{0}", ex.Message));
      }
    }
    #endregion

    #region SFTP上传文件
    /// <summary>
    /// SFTP上传文件
    /// </summary>
    /// <param name="localPath">本地路径</param>
    /// <param name="remotePath">远程路径</param>
    public void Put(string localPath, string remotePath)
    {
      try
      {
        using (var file = File.OpenRead(localPath))
        {
          Connect();
          sftp.UploadFile(file, remotePath);
          Disconnect();
        }
      }
      catch (Exception ex)
      {
        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件上传失败,原因:{0}", ex.Message));
        throw new Exception(string.Format("SFTP文件上传失败,原因:{0}", ex.Message));
      }
    }
    #endregion

    #region SFTP获取文件
    /// <summary>
    /// SFTP获取文件
    /// </summary>
    /// <param name="remotePath">远程路径</param>
    /// <param name="localPath">本地路径</param>
    public void Get(string remotePath, string localPath)
    {
      try
      {
        Connect();
        var byt = sftp.ReadAllBytes(remotePath);
        Disconnect();
        File.WriteAllBytes(localPath, byt);
      }
      catch (Exception ex)
      {
        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件获取失败,原因:{0}", ex.Message));
        throw new Exception(string.Format("SFTP文件获取失败,原因:{0}", ex.Message));
      }

    }
    #endregion

    #region 删除SFTP文件
    /// <summary>
    /// 删除SFTP文件 
    /// </summary>
    /// <param name="remoteFile">远程路径</param>
    public void Delete(string remoteFile)
    {
      try
      {
        Connect();
        sftp.Delete(remoteFile);
        Disconnect();
      }
      catch (Exception ex)
      {
        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件删除失败,原因:{0}", ex.Message));
        throw new Exception(string.Format("SFTP文件删除失败,原因:{0}", ex.Message));
      }
    }
    #endregion

    #region 获取SFTP文件列表
    /// <summary>
    /// 获取SFTP文件列表
    /// </summary>
    /// <param name="remotePath">远程目录</param>
    /// <param name="fileSuffix">文件后缀</param>
    /// <returns></returns>
    public ArrayList GetFileList(string remotePath, string fileSuffix)
    {
      try
      {
        Connect();
        var files = sftp.ListDirectory(remotePath);
        Disconnect();
        var objList = new ArrayList();
        foreach (var file in files)
        {
          string name = file.Name;
          if (name.Length > (fileSuffix.Length + 1) && fileSuffix == name.Substring(name.Length - fileSuffix.Length))
          {
            objList.Add(name);
          }
        }
        return objList;
      }
      catch (Exception ex)
      {
        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件列表获取失败,原因:{0}", ex.Message));
        throw new Exception(string.Format("SFTP文件列表获取失败,原因:{0}", ex.Message));
      }
    }
    #endregion

    #region 移动SFTP文件
    /// <summary>
    /// 移动SFTP文件
    /// </summary>
    /// <param name="oldRemotePath">旧远程路径</param>
    /// <param name="newRemotePath">新远程路径</param>
    public void Move(string oldRemotePath, string newRemotePath)
    {
      try
      {
        Connect();
        sftp.RenameFile(oldRemotePath, newRemotePath);
        Disconnect();
      }
      catch (Exception ex)
      {
        // TxtLog.WriteTxt(CommonMethod.GetProgramName(), string.Format("SFTP文件移动失败,原因:{0}", ex.Message));
        throw new Exception(string.Format("SFTP文件移动失败,原因:{0}", ex.Message));
      }
    }
    #endregion

  }

调用:文章来源地址https://www.toymoban.com/news/detail-614426.html

   SFTPHelper sFTPHelper = new SFTPHelper("172.0.0.1", "21", "sftp", "bacd123");
   sFTPHelper.Get("/bak/10001.pdf", "D:\\10001.pdf");

到了这里,关于C# FTP下载 采用Ssh.Net方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Finalshell(SSH)连接虚拟机超时java.net.ConnectException: Connection refused【已解决】

    最近学习Liunx,连接虚拟机一直超时,出现的问题查了一晚上解决了,自己记录一下防止忘记。(如果需要安装包的可以留言) 1.虚拟机ip网段和本机ip网段不相同 2.网络设配器异常需要更新驱动、 解决办法 开启桥接模式 在这里注意不要选自动并且需要和你主机连接的对应

    2024年02月11日
    浏览(38)
  • C#面:列举ASP.NET页面之间传递值的几种方式

    查询字符串(Query String): 可以通过在URL中添加参数来传递值。 例如:http://example.com/page.aspx?id=123 在接收页面中可以通过Request.QueryString[“id”]来获取传递的值。 会话状态(Session State): 可以使用Session对象在不同页面之间存储和检索值。 在发送页面中可以使用Session[“k

    2024年02月19日
    浏览(30)
  • Linux:FTP vs SSH

    FTP是一种文件下载协议,相比SSH,其安全性较低,在文件传输时并未做加密处理。登录FTP服务器的方法有2种:一种是FTP图形客户端(可以用于windows电脑连接linux系统);另一种是使用ftp命令(linux系统 自带的一种命令)。本文着重介绍ftp命令行的使用。 ftp是Linux自带的一个命

    2024年01月24日
    浏览(23)
  • 采用Vscode进行ssh连接远程服务器并实现代码运行和调试

    这篇博客介绍了使用Pycharm进行ssh连接服务器进行代码调试:https://blog.csdn.net/m0_48086806/article/details/135112106 实际上使用Vscode也可以进行同样的操作 VSCode,全称为 Visual Studio Code ,是一款由微软开发的免费开源代码编辑器。它支持多种编程语言,并且具有强大的功能和扩展性。

    2024年01月17日
    浏览(45)
  • hydra暴力破解ftp-telnet-mysql-ssh-http

    目录结构 简介: 一、FTP 1、FTP简介: FTP 是仅基于 TCP 的服务,不支持 UDP(防止丢包),与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口) 二、telnet 1、简介:测试连通性,也有用来管

    2023年04月10日
    浏览(35)
  • 【Unity 踩坑系列】配置VScode的C#环境自动下载 .NET Runtime Failed to download 问题解决后续!!!

    想必大家这几天肯定都被Vscode C#插件的自动下载.net runtime的问题所烦恼,之前我也出了一期文章是来解决这个问题的但是,只是解决了部分网友们的问题有部分网友还是会自动下载! 【Unity 踩坑系列】配置VScode环境Downloading the.NET Runtime Failed to download 之前没看过这篇解决方案

    2024年02月10日
    浏览(28)
  • C# FTP操作(上传、下载等……)

    因为工作中经常涉及到FTP文件的上传和下载,每次有这样的需求时都要重复编写相同的代码,后来干脆整理一个FTPClass,这样不仅方便自己使用,也可以共享给部门其它同事,使用时直接调用就可以了,节省了大家的开发时间。其实这个类网上有很多同样的写法,就算是给自

    2023年04月09日
    浏览(32)
  • C#实现稳定的ftp下载文件方法

            当使用C#实现稳定的FTP下载文件的方法时,我们可以使用 FtpWebRequest 类来执行FTP操作,并根据需要添加错误处理和重试机制。下面是一个示例代码: 使用实例:          在上述示例中,我们首先通过 DownloadFile 方法执行FTP下载操作,并将远程文件保存到本地文

    2024年02月12日
    浏览(30)
  • Net2FTP搭建免费web文件管理器『打造个人网盘』

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人存储文件资料,还是商业文件流转,都有数据存储和传输的需求。有需求就有市场,相应的传输软件层出不穷,而这些软件也各有

    2023年04月15日
    浏览(30)
  • ssh 连接方式

    执行如下命令,在交互中输入连接密码,如未设定密码可回车enter完成。 1、上传公钥到服务端 生成公私钥:在客户端执行如下命令生成客户端的私钥和公钥。一般保存在~/.ssh/目录的id_rsa(私钥),id_rsa.pub(公钥) 上传公钥:使用如下命令上传客户端的公钥到服务器,需要在交互

    2024年02月09日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包