C#使用sftp进行文件传输,本地文件和远端路径都是存在的但还是显示异常
3条回答 默认 最新
关注
引自免费微信小程序:皆我百晓生
看起来你在尝试使用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}"); // 在这里添加详细的异常日志记录,以便进一步分析 } }
运行这段代码后,你应该能看到更详细的错误消息,这将有助于诊断问题。如果有任何其他问题,或者需要进一步的帮助,请告诉我。
解决 无用评论 打赏 举报 编辑记录- 远程路径的正确性:检查