C#使用sftp进行文件传输,本地文件和远端路径都是存在的但还是显示异常

关注引自免费微信小程序:皆我百晓生
看起来你在尝试使用Renci.SshNet库来进行SFTP文件上传,但是遇到了Renci.SshNet.Common.SftpPathNotFoundException: "No such file"的错误。这个错误通常表示在远程服务器上找不到指定的路径。
为了解决这个问题,你需要确保以下几个方面:
SFTP_catalog变量中的值是否正确,它应该指向你要上传文件到的目录。例如,如果你的目录结构是/home/EP/Desktop,那么SFTP_catalog应该是"/home/EP/Desktop/"(注意末尾的斜杠很重要,因为它表示这是一个目录而不是一个文件)。SFTP_username和SFTP_password是正确的。client.Connect()之后,检查连接状态。如果连接失败,需要找出原因并解决。以下是修改后的代码,包括一些额外的日志输出以便于调试:
string SFTP_IP = System.Configuration.ConfigurationManager.AppSettings["SFTP_IP"];
string SFTP_port = System.Configuration.ConfigurationManager.AppSettings["SFTP_port"];
string SFTP_username = System.Configuration.ConfigurationManager.AppSettings["SFTP_username"];
string SFTP_password = System.Configuration.ConfigurationManager.AppSettings["SFTP_password"];
string SFTP_catalog = System.Configuration.ConfigurationManager.AppSettings["SFTP_catalog"];
string localRoute = @"D:\01.Jenkins\Program";
string fileName = @"D:\Workspace\Jenkins_2R452_Workspace\workspace\TestSpace\GitLab_Build_ccs_10_3_1\111111.txt";
using (var client = new SftpClient(SFTP_IP, int.Parse(SFTP_port), SFTP_username, SFTP_password))
{
try
{
client.Connect();
if (client.IsConnected)
{
Console.WriteLine("连接成功");
}
else
{
throw new Exception("连接失败");
}
string remoteFilePath = Path.Combine(SFTP_catalog, "11111");
var localFileStream = File.OpenRead(fileName);
if (localFileStream != null)
{
client.BufferSize = 4 * 1024;
client.UploadFile(localFileStream, remoteFilePath);
Console.WriteLine($"文件 {fileName} 已经上传到 {remoteFilePath}");
}
else
{
Console.WriteLine($"无法打开本地文件 {fileName}");
}
client.Disconnect();
}
catch (Exception ex)
{
Console.WriteLine($"发生错误:{ex.Message}");
// 在这里添加详细的异常日志记录,以便进一步分析
}
}
运行这段代码后,你应该能看到更详细的错误消息,这将有助于诊断问题。如果有任何其他问题,或者需要进一步的帮助,请告诉我。