123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.ServiceModel;
- using System;
- using System.Net;
- using System.Collections;
- using WinSCP;
- using Kede;
- using System.Text;
- using System.IO;
- using Kede.Utils;
- namespace TestAgreement.utils
- {
- internal class SftpWinSCPUtils
- {
- // 上传
- public static ResponseBody sftpUpload(string localFilePath,string remoteFilePath,string ServerUrl, string UserName, string Password,string PortNumber) {
- // 本地文件
- //localFilePath = @"D:\X.nc";
- ResponseBody responseBody = new ResponseBody();
- if (!File.Exists(localFilePath))
- {
- responseBody.code = 0;
- responseBody.msg = $"File '{localFilePath}' does not exist.";
- return responseBody;
- }
- //localFilePath =localFilePath.Replace(@"\\",@"\");
- // 远程文件地址
- //remoteFilePath = "/testNc/X.nc";
- //remoteFilePath = remoteFilePath;
- responseBody.code = 1;
- // 设定 SFTP 连接选项
- SessionOptions sessionOptions = new SessionOptions
- {
- Protocol = Protocol.Sftp,
- HostName = ServerUrl, // SFTP 服务器地址
- UserName = UserName, // 用户名
- Password = Password, // 密码
- PortNumber = PortNumber.StringToInt(),
- };
- // 使用 WinSCP 会话
- using (Session session = new Session())
- {
- // 连接到 SFTP 服务器
- try
- {
- // 设置不用公私钥的一定要设置这句话
- sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey = true;
- // 不用公私钥的要这一句
- sessionOptions.FtpSecure = FtpSecure.None;
- Console.WriteLine("scp =======================");
- session.Open(sessionOptions);
- Console.WriteLine("scp end =======================");
- // 执行上传
- TransferOperationResult transferResult;
- transferResult = session.PutFiles(localFilePath, remoteFilePath, false);
- // 检查传输结果
- transferResult.Check();
- // 输出上传的文件名
- foreach (TransferEventArgs transfer in transferResult.Transfers)
- {
- Console.WriteLine("Uploaded: " + transfer.FileName);
- }
- }
- catch (Exception e)
- {
- Console.WriteLine("Error: " + e.Message);
- responseBody.code = 0;
- responseBody.result = false;
- responseBody.msg = e.Message;
- }
- finally
- {
- // 断开连接
- session.Dispose();
- }
- // 上传成功后设置未
- if(responseBody.code == 1)
- {
- SocketUtil.socket(ServerUrl, Path.GetFileName(remoteFilePath),responseBody);
- }
- return responseBody;
- }
- }
- /*
- 下载nc程序
- */
- public void SftpDownload()
- {
- Console.WriteLine("====================sftp文件下载=========================");
- // 远程文件路径
- string localFilePath = @"C:\Users\Lenovo\Desktop\temp\testNcQ.nc";
- // 本地文件路径
- string remoteFilePath = "/testNc/testNcQ.nc";
- // 设定 SFTP 连接选项
- SessionOptions sessionOptions = new SessionOptions
- {
- Protocol = Protocol.Sftp,
- HostName = "192.168.11.39", // SFTP 服务器地址
- UserName = "root", // 用户名l
- Password = "root", // 密码
- PortNumber = 8081,
- };
- // 使用 WinSCP 会话
- using (Session session = new Session())
- {
- try
- {
- // 连接到 SFTP 服务器
- session.Open(sessionOptions);
- Console.WriteLine("Connected to SFTP server.");
- // 执行下载
- TransferOperationResult transferResult = session.GetFiles(remoteFilePath, localFilePath, false);
- transferResult.Check(); // 检查传输结果
- // 输出下载的文件名
- foreach (TransferEventArgs transfer in transferResult.Transfers)
- {
- Console.WriteLine("Downloaded: " + transfer.FileName);
- }
- }
- catch (Exception e)
- {
- Console.WriteLine("Error: " + e.Message);
- }
- finally
- {
- // 断开连接
- session.Dispose();
- }
- }
- }
- /*
- 删除nc程序
- */
- public static ResponseBody SftpDelete(string remoteFilePath, string ServerUrl,string UserName,string Pasword,string PortNumber)
- {
- Console.WriteLine("====================sftp文件删除=========================");
- // 远程文件路径
- //string remoteFilePath = "/testNc/testNcQ.nc";
- ResponseBody responseBody = new ResponseBody();
- responseBody.code = 1;
- // 设定 SFTP 连接选项
- SessionOptions sessionOptions = new SessionOptions
- {
- Protocol = Protocol.Sftp,
- HostName = ServerUrl, // SFTP 服务器地址
- UserName = UserName, // 用户名l
- Password = Pasword, // 密码
- PortNumber = PortNumber.StringToInt(),
- };
- sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey = true;
- // 使用 WinSCP 会话
- using (Session session = new Session())
- {
- try
- {
- // 连接到 SFTP 服务器
- session.Open(sessionOptions);
- Console.WriteLine("Connected to SFTP server.");
- // 执行下载
- session.RemoveFile(remoteFilePath);
- }
- catch (Exception e)
- {
- Console.WriteLine("Error: " + e.Message);
- responseBody.code = 0;
- responseBody.msg = e.Message;
- }
- finally
- {
- // 断开连接
- session.Dispose();
- }
- }
- return responseBody;
- }
- }
- }
|