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

c#使用winscp库实现FTP/SFTP/SCP的获取列表、上传和下载功能

网上写c#调用winscp实现的资料很少,且写的不够详细。本人查了下winscp的libraries说明,写了个小工具,供大家参考。

winscp的接口说明地址如下:

WinSCP .NET Assembly and COM Library :: WinSCP

一、先展示一下小工具的界面

1、支持SFTP/FTP/SCP

2、支持文件夹、文件的上传和下载

二、源码地址

源码地址如下:

https://download.csdn.net/download/qq_39385706/89808931

三、代码关键部分

1、配置会话选项

// 配置会话选项sessionOptions = new SessionOptions{// Protocol = Protocol.Scp,HostName = textBox1.Text,UserName = textBox2.Text,Password = textBox3.Text,PortNumber =Convert.ToInt32( textBox4.Text),//SshHostKeyFingerprint = "ssh-rsa 1024 ll0iqW5PjitSqcb1JuI3pHXOhehkMmHLcKRg1Ijm0JY=",// SshHostKeyFingerprint = "ssh-rsa 1024 ZoU0fHT9xO+4QMxSYJlpebu5xgHPilV3wuAk0diF1AQ=",};switch (comboBox3.Text){case "Sftp":sessionOptions.Protocol = Protocol.Sftp;break;case "Scp":sessionOptions.Protocol = Protocol.Scp;break;case "Ftp":sessionOptions.Protocol = Protocol.Ftp;break;default:break;}if (comboBox3.Text.Equals("Sftp") || comboBox3.Text.Equals("Scp")){sessionOptions.AddRawSettings("KEX", "dh-group1-sha1,ecdh,dh-gex-sha1,dh-group14-sha1,rsa,WARN");}

2、获取目录列表

using (session = new WinSCP.Session()){try{if (Protocol.Equals("Sftp") || Protocol.Equals("Scp")){//sessionOptions.AddRawSettings("KEX", "dh-group1-sha1,ecdh,dh-gex-sha1,dh-group14-sha1,rsa,WARN");string SshHostKeyFingerprint1 = session.ScanFingerprint(sessionOptions, "SHA-256");LogHelper.WriteLog("SshHostKeyFingerprint====" + SshHostKeyFingerprint1);sessionOptions.SshHostKeyFingerprint = SshHostKeyFingerprint1;}// 连接session.Open(sessionOptions);// Upload filestransferOptions.TransferMode = TransferMode.Binary;//获取所有目录remoteDirectoryInfo = session.ListDirectory(remotePath);// remoteDirectoryInfo = session.ListDirectory(".");int fileCount = remoteDirectoryInfo.Files.Count;Console.WriteLine(fileCount);listView2Show(fileCount);}catch (Exception ex){MessageBox.Show(ex.Message);}}

3、上传文件或文件夹

 try{using (session = new WinSCP.Session()){// 连接session.Open(sessionOptions);// Upload filestransferOptions.TransferMode = TransferMode.Binary;string localPath = comboBox1.Text + listView1.SelectedItems[0].Text;string remoptejPath = comboBox2.Text;transferResult = session.PutFiles(localPath, remoptejPath, false, transferOptions);// Throw on any errortransferResult.Check();// Print resultsforeach (TransferEventArgs transfer in transferResult.Transfers){Console.WriteLine("Download of {0} succeeded", transfer.FileName);}}}catch (Exception ex){MessageBox.Show(ex.Message);}

4、下载文件或者文件夹

  try{using (session = new WinSCP.Session()){// 连接session.Open(sessionOptions);// Upload filestransferOptions.TransferMode = TransferMode.Binary;string srcPath = comboBox2.Text + listView2.SelectedItems[0].Text;string objPath = comboBox1.Text;transferResult = session.GetFiles(srcPath, objPath, false, null);// Throw on any errortransferResult.Check();// Print resultsforeach (TransferEventArgs transfer in transferResult.Transfers){Console.WriteLine("Download of {0} succeeded", transfer.FileName);}listView1Show(comboBox1.Text);}}catch (Exception ex){MessageBox.Show(ex.Message);}

相关文章:

c#使用winscp库实现FTP/SFTP/SCP的获取列表、上传和下载功能

网上写c#调用winscp实现的资料很少,且写的不够详细。本人查了下winscp的libraries说明,写了个小工具,供大家参考。 winscp的接口说明地址如下: WinSCP .NET Assembly and COM Library :: WinSCP 一、先展示一下小工具的界面 1、…...

【Android 13源码分析】Activity生命周期之onCreate,onStart,onResume-1

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…...

达梦数据库开启归档模式

目录 一、什么是归档模式? 二、开启归档模式的步骤 1、创建归档目录 2、进入dm数据库bin目录 3、登录数据库 4、关闭数据库 5、启动数据库到Mount状态 6、增加本地归档日志文件 7、开启归档 8、启动数据库 9、验证是否开启成功 三、开启归档模式的优…...

C++ 语言特性07 - 静态成员的初始化

一:概述 1. 静态成员变量通常在类定义内部声明,并在类定义外部定义和初始化。 class MyClass { public:static int staticVar; // 声明 };int MyClass::staticVar 42; // 定义和初始化 2. 从C11开始,可以在类内直接初始化静态数据成员&am…...

【数据结构】图论基础

文章目录 图的概念图的基本概念图的类型图的表示方法 图的相关基本概念1. 路径(Path)2. 连通性(Connectivity)3. 图的度(Degree)4. 子图(Subgraph)5. 生成树(Spanning Tr…...

HTML5实现好看的唐朝服饰网站模板源码2

文章目录 1.设计来源1.1 网站首页1.2 唐装演变1.3 唐装配色1.4 唐装花纹1.5 唐装文化 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xcLeigh 文章地址:https://blog.csdn.ne…...

golang web笔记-2.请求request

什么是request http消息分为request(请求) 和 response(响应) request:在go中是一个struct,代表了客户段发送的http请求,已可以通过request 的方法访问请求中的cookie、URL、User Agent&#xf…...

docker的安装与启动——配置国内Docker源

移除旧版本docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 配置docker yum源。 sudo yum install -y yum-utils sudo yum-config-manager –add-repo ht…...

httpsok-v1.17.0-SSL通配符证书自动续签

🔥httpsok-v1.17.0-SSL通配符证书自动续签 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具,基于全新的设计理念,专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业,稳定、安全、可靠。 一行命令,一分钟轻…...

相机、镜头参数详解以及相关计算公式

一、工业相机参数 1、分辨率 相机每次采集图像的像素点数,也是指这个相机总共有多少个感光晶片。在采集图像时,相机的分辨率对检测精度有很大的影响,在对同样打的视场成像时,分辨率越高,对细节的展示越明显。 相机像素…...

【微服务】组件、基础工程构建(day2)

组件 服务注册和发现 微服务模块中,一般是以集群的方式进行部署的,如果我们调用的时候以硬编码的方式,那么当服务出现问题、服务扩缩容等就需要对代码进行修改,这是非常不好的。所以微服务模块中就出现了服务注册和发现组件&…...

ESP32微信小程序SmartConfig配网

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ESP32&微信小程序SmartConfig配网 前言一、SmartConfig是什么?二、使用乐鑫官方的smart_config例子1.运行照片 三、微信小程序总结 前言 本人是酷爱ESP32S3这…...

【PostgreSQL】提高篇——深入了解不同类型的 JOIN(INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)应用操作

1. JOIN 的基础概念 在 SQL 中,JOIN 是用于从两个或多个表中组合行的操作。JOIN 允许我们根据某些条件将表中的数据关联在一起。常见的 JOIN 类型包括: INNER JOIN:仅返回两个表中满足连接条件的行。LEFT JOIN(或 LEFT OUTER JO…...

师生健康信息管理:SpringBoot技术突破

第4章 系统设计 4.1 系统体系结构 师生健康信息管理系统的结构图4-1所示: 图4-1 系统结构 登录系统结构图,如图4-2所示: 图4-2 登录结构图 师生健康信息管理系统结构图,如图4-3所示。 图4-3 师生健康信息管理系统结构图 4.2…...

【完-网络安全】Windows注册表

文章目录 注册表启动项及常见作用五个根节点常见入侵方式 注册表 注册表在windows系统的配置和控制方面扮演了一个非常关键的角色,它既是系统全局设置的存储仓库,也是每个用户的设置信息的存储仓库。 启动项及常见作用 快捷键 WinR打开运行窗口&#x…...

车辆重识别(2021NIPS在图像合成方面,扩散模型打败了gans网络)论文阅读2024/10/01

本文在架构方面的创新: ①增加注意头数量: 使用32⇥32、16⇥16和8⇥8分辨率的注意力,而不是只使用16⇥16 ②使用BigGAN残差块 使用Big GAN残差块对激活进行上采样和下采样 ③自适应组归一化层 将经过组归一化操作后的时间步和类嵌入到每…...

掌控物体运动艺术:图扑 Easing 函数实践应用

现如今,前端开发除了构建功能性的网站和应用程序外,还需要创建具有吸引力且尤为流畅交互的用户界面,其中动画技术在其中发挥着至关重要的作用。在数字孪生领域,动画的应用显得尤为重要。数字孪生技术通过精确模拟现实世界中的对象…...

Python从入门到高手4.2节-掌握循环控制语句

目录 4.2.1 理解循环控制 4.2.2 for循环结构 4.2.3 循环结构的else语句 4.2.4 while循环结构 4.2.5 循环结构可以嵌套 4.2.6 国庆节吃好玩好 4.2.1 理解循环控制 我们先来搞清楚循环的含义。以下内容引自汉语词典: 循环意指往复回旋,指事物周而复始地运动或变…...

CSS 中的overscroll-behavior属性

overscroll-behavior 是 CSS 中的一个属性,它用于控制元素在发生滚动时,当滚动范围超出其边界时的行为。这个属性对于改善用户体验特别有用,尤其是在移动端设备上,当用户尝试滚动一个已经达到滚动极限的元素时,可以通过…...

GPT对话知识库——在STM32的平台下,通过SPI读取和写入Flash的步骤。

目录 1,问: 1,答: 步骤概述 步骤 1:SPI 初始化 步骤 2:Flash 初始化(可选) 步骤 3:发送读取命令 示例:发送读取数据命令 步骤 4:读取数据…...

如何轻松实现QQ空间历史数据自动化备份:GetQzonehistory完整解决方案指南

如何轻松实现QQ空间历史数据自动化备份:GetQzonehistory完整解决方案指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 还在为QQ空间里的青春回忆可能丢失而担心吗&#x…...

避坑指南:CentOS7部署LibreNMS常见错误及解决方案

CentOS7部署LibreNMS避坑实战:从SELinux到数据库权限的深度排错指南 对于网络监控系统的部署,LibreNMS以其开源特性和强大功能成为众多技术团队的首选。但在CentOS7环境下,从系统配置到服务调优的每个环节都可能成为阻碍顺利部署的暗礁。本文…...

背包问题可视化:用动态规划表格理解0-1背包最优解

背包问题可视化:用动态规划表格理解0-1背包最优解 当你第一次面对背包问题时,可能会被那些复杂的公式和递归关系搞得晕头转向。我们常常会遇到这样的情况:明明看懂了算法描述,但一到手动计算就不知所措。这就是为什么我们需要一种…...

FanControl:打造高效静音的电脑散热解决方案

FanControl:打造高效静音的电脑散热解决方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanContr…...

OpenClaw+百川2-13B-4bits:自媒体人的内容创作流水线搭建

OpenClaw百川2-13B-4bits:自媒体人的内容创作流水线搭建 1. 为什么需要自动化内容流水线 作为一个长期运营科技类自媒体的创作者,我每天需要完成热点追踪、大纲构思、初稿撰写、排版发布等一系列重复性工作。最痛苦的不是写作本身,而是大量…...

企业级实验室信息管理系统:SENAITE LIMS 实战深度解析与部署指南

企业级实验室信息管理系统:SENAITE LIMS 实战深度解析与部署指南 【免费下载链接】senaite.lims SENAITE Meta Package 项目地址: https://gitcode.com/gh_mirrors/se/senaite.lims SENAITE LIMS 是一款基于 Plone 和 Python 构建的开源实验室信息管理系统&a…...

GESP5级C++考试语法知识(十一、递归算法(一))

🌟 第一章:什么是递归?(“套娃小精灵”的故事)1、🎯 想象一个魔法世界:有一个小精灵,它不会做复杂的事情,但它有一个绝招:👉 遇到问题&#xff0c…...

(2026年3月26日)免费电话和大家现在经常说的网络虚拟电话有什么共通和区别之处——

(2026年3月26日)免费电话和大家现在经常说的网络虚拟电话有什么共通和区别之处——免费电话(Free phone/Freephone)是一种电话系统,其通话费用由被叫方(通常是企业或组织)支付,主叫方…...

LeetCode 3548. 等和矩阵分割2 详细题解(前缀和+二分+连通性分析)

LeetCode 3548. 等和矩阵分割2 详细题解(前缀和二分连通性分析) 🏷️ 标签:前缀和、二分查找、连通性、哈希表、矩阵、周赛难题 📊 难度:中等 | 📝 题目编号:3548 | 🗂️…...

如何在MATLAB中免费实现亚像素级变形测量:Ncorr 2D完整指南 [特殊字符]

如何在MATLAB中免费实现亚像素级变形测量:Ncorr 2D完整指南 🚀 【免费下载链接】ncorr_2D_matlab 2D Digital Image Correlation Matlab Software 项目地址: https://gitcode.com/gh_mirrors/nc/ncorr_2D_matlab 你是否曾为材料变形测量而烦恼&am…...