You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Renci Ssh.Net下载文件后抛出“文件路径不存在或无效”错误

问题分析与解决方案
  • 核心错误:远程路径格式错误
    你构造的FileSourceName错误地将FTP服务器地址与远程路径拼接在一起,生成了类似ftp.example.com/data/spot_performance.csv的字符串。但SftpClient.DownloadFile方法需要的是远程服务器上的文件相对路径或绝对路径,不需要包含服务器地址——因为你已经通过SftpClient建立了服务器连接,直接传入远程文件的路径即可。

  • 修正后的代码

    using (var sftp = new SftpClient(FTPServer, 22, FTPUserID, FTPPwd))
    {
        sftp.Connect();
        // 仅保留远程服务器上的文件路径,无需拼接服务器地址
        FileSourceName = FTPPath + "/spot_performance.csv";
        FileProcessName = FileProcessPath + @"\spot_performance.csv";
    
        using (var fileStream = System.IO.File.OpenWrite(@"C:\Data\ETL\Innogames - SPOT Performance\spot_performance.csv"))
        {
            sftp.DownloadFile(FileSourceName, fileStream);
        }
    }
    
  • 额外检查要点

    • 确认FTPPath是远程服务器上的有效路径:如果文件在服务器根目录,直接写"/spot_performance.csv";如果在子目录,比如"/data/spot_performance.csv"。
    • 确保SFTP账号对该远程路径拥有读取权限,权限不足也可能触发类似“路径无效”的错误提示。
    • 本地目标目录@"C:\Data\ETL\Innogames - SPOT Performance"需提前存在,虽然File.OpenWrite会自动创建文件,但目录不存在时可能引发隐性异常,建议提前用Directory.CreateDirectory确保目录存在。

内容的提问来源于stack exchange,提问作者John W.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:34:49