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

如何使用WinSCP/C#向FTP服务器文件追加内容而非覆盖

WinSCP FTP文件追加覆盖问题解决方案

你当前代码失效的核心原因是:PutFiles方法搭配OverwriteMode.Append的配置,不适用FTP协议的原生追加场景,该逻辑仅对WinSCP支持的其他传输协议或同步场景生效,FTP场景下仍会执行覆盖逻辑。

修复方案

直接使用WinSCP .NET程序集内置的Session.AppendFile方法,该方法专门用于向远程文件追加内容,底层原生调用FTP的APPE命令,既不需要先下载文件到本地,也能保留你的TLS加密配置避免凭证泄露。

修改后的完整代码如下:

SessionOptions sessionOptions = new SessionOptions
{
    Protocol = Protocol.Ftp,
    HostName = "www.site.com",
    UserName = "name",
    Password = "pass",
    FtpSecure = FtpSecure.Explicit,
    TlsHostCertificateFingerprint = "what ever that is",
};

using (Session session = new Session())
{
    session.Open(sessionOptions);
    TransferOptions options = new TransferOptions();
    options.TransferMode = TransferMode.Ascii;

    // 替换原PutFiles方法为AppendFile
    TransferOperationResult transferResult;
    transferResult = session.AppendFile(@"E:\Up\log.txt", "/log.txt", options);
    transferResult.Check();

    foreach (TransferEventArgs transfer in transferResult.Transfers)
    {
        Console.WriteLine("追加内容到 {0} 成功", transfer.FileName);
    }
}

补充说明

  • 该方案和你之前测试的FtpWebRequest走的是相同的FTP协议逻辑,追加效果完全一致,区别是你的Session配置了显式TLS加密,所有传输内容包括身份验证环节全程加密,不会被WireShark抓取到明文凭证。
  • 只要你之前用FtpWebRequest能正常追加,说明你的FTP服务端支持APPE命令,该方案即可正常运行,无需额外调整服务端配置。

内容的提问来源于stack exchange,提问作者captain_majid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:24:02