【发布时间】:2010-03-13 11:23:27
【问题描述】:
如何获取 Stream 对象来读取 SFTP 共享上的文件? 我看到有使用 Sftp 类从 SFTP 下载文件的功能,但我需要一个 Stream 对象才能显示下载进度。
【问题讨论】:
如何获取 Stream 对象来读取 SFTP 共享上的文件? 我看到有使用 Sftp 类从 SFTP 下载文件的功能,但我需要一个 Stream 对象才能显示下载进度。
【问题讨论】:
我对 SharpSSH 不熟悉,但 edtFTPnet/PRO 是一个支持 SFTP 和 FTPS 的商业 .NET 库,它使用您可以订阅的 BytesTransferred 事件。
因此,您会定期收到有关已下载或上传多少的通知,如果您在传输前获取大小,则可以轻松计算下载进度。
我假设 SharpSSH 有一个您可以订阅的类似活动。
【讨论】:
尝试下载SSH.NET Library from CodePlex
这个库有一个下载文件的方法
public void DownloadFile(string path, Stream output);
但是我使用 System.Net.WebClient.DownloadData 方法在 sftp 服务器中获取文件,该方法返回一个 byteArray,您可以轻松转换为 Stream。
WebClient client = new WebClient();
byte[] file = client.DownloadData(url);
Stream stream = new MemoryStream(file);
希望这会有所帮助。
【讨论】: