【问题标题】:C#-Renci.Ssh.Net- UploadFile SFTP- Verify if File Uploaded SuccessfullyC#-Renci.Ssh.Net- UploadFile SFTP- 验证文件是否上传成功
【发布时间】:2019-03-11 16:53:33
【问题描述】:


我正在使用 Renci.Ssh.Net 在 SFTP 位置上传文件。

           using (SftpClient client = new SftpClient(host, port, sftpUser, sftpPassword))
            {
                client.Connect();
                if (client.IsConnected)
                {
                    client.BufferSize = 1024;
                    var filePath = sftpDir + fileName;

                    client.UploadFile(memoryStream, filePath, (o) =>
                    {
                       isUploaded = true;
                    });

                    client.Disconnect();
                }
                client.Dispose();
            }

如何验证文件是否上传成功?UploadFile() 函数的第三个参数是回调操作。我尝试在回调中打印字节 (o),但似乎 UploadFile() 以块的形式上传字节,而不是所有字节一次,所以我发现要打印多次的字节。
如何使用回调来验证上传成功?
谢谢。

【问题讨论】:

  • 是的,o 是在一个块中发送的字节数。我尝试这样做,但总数不匹配。我需要从 MemoryStream 发送内容。所以我尝试比较 memoryStreamObject.Length 和总字节数。但它们不匹配。

标签: c# sftp ssh.net


【解决方案1】:

没有必要滥用uploadCallback来检查文件是否正确上传。

如果出现任何问题,SftpClient.UploadFile 方法会抛出异常。如果没有抛出,则上传成功。处理回调不会让你更有信心。


另见How to perform checksums during a SFTP file transfer for data integrity?

【讨论】:

    猜你喜欢
    • 2013-11-16
    • 1970-01-01
    • 2019-03-13
    • 2014-12-29
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    相关资源
    最近更新 更多