小编sco*_*zey的帖子

SftpClient.UploadFile 和 SftpClient.WriteAllBytes 有什么区别?

当我使用 SSH.NET 通过 SFTP 传输文件时,我观察到一些奇怪的行为。我正在使用 SFTP 将 XML 文件传输到另一个服务(我不控制)进行处理。如果我使用SftpClient.WriteAllBytes该服务,则会抱怨该文件不是有效的 XML。如果我先写入临时文件然后使用则SftpClient.UploadFile传输成功。

发生了什么?

使用.WriteAllBytes

public void Send(string remoteFilePath, byte[] contents)
{
    using(var client = new SftpClient(new ConnectionInfo(/* username password etc.*/)))
    {
        client.Connect();
        client.WriteAllBytes(remoteFilePath, contents);
    }
}
Run Code Online (Sandbox Code Playgroud)

使用.UploadFile

public void Send(string remoteFilePath, byte[] contents)
{
    var tempFileName = Path.GetTempFileName();
    File.WriteAllBytes(tempFileName, contents);
    using(var fs = new FileStream(tempFile, FileMode.Open))
    using(var client = new SftpClient(new ConnectionInfo(/* username password etc.*/)))
    {
        client.Connect();
        client.UploadFile(fs, targetPath);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑: Will 在评论中询问我如何将 …

.net c# ssh sftp ssh.net

6
推荐指数
1
解决办法
2397
查看次数

标签 统计

.net ×1

c# ×1

sftp ×1

ssh ×1

ssh.net ×1