0

我正在开发一个应用程序,我需要使用 sftp 下载一些文件。我安装了 gem net-sftp 并且它工作正常。使用我在此页面上找到的监控过程:http: //net-ssh.rubyforge.org/sftp/v2/api/,我可以在终端中看到进度。问题是,我想让用户看到在这个过程中发生了什么,显示一个进度条,也许在我的用户界面中显示一条监控线。

我尝试了很多东西,但没有一个有效。当我进入下载循环时,我无法修改我的任何实例变量,因此我无法保存监控数据以使用 javascript 显示它。alter-filters 也不起作用。

我不知道如何将信息存储在循环中以在我的 UI 中使用它。任何想法 ?

4

2 回答 2

0

我会假设你有这样的事情发生......

1. client ----> 'do sftp tranfer' ----> server
2.                                      server ------> 'doing sftp'
3. client <---- 'done sftp' ----------- server

简短的回答是,在这种情况下,您不能轻易地为客户提供进展。

更长的答案是您必须与客户端打开某种流以发送进度。

1. client ----> 'do sftp tranfer' ----> server    
2.                                      server ------> 'doing sftp'
3. client <====> 'open stream'    <===> server
4. client <---- 'OK' -----------        server

这里的技巧是在服务器上执行流和 sftp 的两个进程之间进行通信。s

于 2012-07-24T06:15:43.433 回答
0

我即将进入类似的领域,我相信这将是我的方法。我目前有服务器访问该位置并下载文件。发生这种情况时,我将让服务器每 5 秒检查一次文件的文件大小并报告大小。如果您在下载开始之前获取文件大小并报告回来,那么您将能够提供我认为的进度。

于 2015-06-14T15:00:59.210 回答