![](/img/trans.png)
[英]Download file to browser from SFTP server in ASP.NET using SSH.NET
[英]SSH.NET : How to retrieve the status of file transfer from the SFTP server
我正在使用SSH.NET库,并编写了一种将文件ftp-ing到服务器的简单方法,如下所示:
using (var client = new Renci.SshNet.SftpClient(host, port, username, password))
{
client.Connect();
Console.WriteLine("Connected to {0}", host);
using (var fileStream = new FileStream(uploadfile, FileMode.Open))
{
client.BufferSize = 4 * 1024; // bypass Payload error large files
client.UploadFile(fileStream, Path.GetFileName(uploadfile));
}
}
如何检索从服务器传回的状态? 我需要知道文件是否已成功传输。
TRY ... CATCH可以从服务器取回状态吗?
谢谢,
尝试以此替换您的UploadFile行。 这提供了您正在调用的函数的回调。 回调在方括号中,其中o为ulong。 可能是写入的字节数或百分比。
client.UploadFile(fileStream, Path.GetFileName(uploadfile), (o) =>
{
Console.WriteLine(o);
});
编辑:
以上等同于此:
//I might be called multiple times during the upload process.
public void OnStatusUpdate(ulong bytesWritten)
{
Console.WriteLine(bytesWritten);
}
...
//later
client.UploadFile(fileStream, Path.GetFileName(uploadfile), OnStatusUpdate);
他们正在调用您的函数,如果不向其传递值,则无法调用您的函数。
有两个可行的选择。
使用UploadFile(Stream input, string path, Action<ulong> uploadCallback)
的Action<ulong> uploadCallback
参数UploadFile(Stream input, string path, Action<ulong> uploadCallback)
。 这可用于检查已上传的字节数,并可与要发送的文件大小进行比较。
在已上传文件的路径上使用SftpFileSytemInformation GetStatus(string path)
,以检查文件是否在磁盘上再次存在其大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.