WJMT12138 2024-05-20 22:37 采纳率: 63.6%
浏览 77

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

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

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-20 22:37
    关注

    引自免费微信小程序:皆我百晓生

    看起来你在尝试使用Renci.SshNet库来进行SFTP文件上传,但是遇到了Renci.SshNet.Common.SftpPathNotFoundException: "No such file"的错误。这个错误通常表示在远程服务器上找不到指定的路径。

    为了解决这个问题,你需要确保以下几个方面:

    1. 远程路径的正确性:检查SFTP_catalog变量中的值是否正确,它应该指向你要上传文件到的目录。例如,如果你的目录结构是/home/EP/Desktop,那么SFTP_catalog应该是"/home/EP/Desktop/"(注意末尾的斜杠很重要,因为它表示这是一个目录而不是一个文件)。
    2. 使用正确的用户名和密码登录:确认提供的SFTP_usernameSFTP_password是正确的。
    3. 确保连接成功:在调用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}");
            // 在这里添加详细的异常日志记录,以便进一步分析
        }
    }
    

    运行这段代码后,你应该能看到更详细的错误消息,这将有助于诊断问题。如果有任何其他问题,或者需要进一步的帮助,请告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月20日