我觉得这值得一个问题,因为StackOverflow似乎没有足够的主题.
我喜欢进步吧.但是,这次我想做一些不同的事情.我想用PHP做以下事情,这个看起来比上一个难得多:
想想FileZilla,但是在浏览器中,用PHP构建.我不想破解Apache或添加任何Apache mod.
这些文档记录了PHP的SSH2扩展(我目前正在使用它 - 你通过pecl安装)和替代的PHPSecLib,我没有使用,但可能会在以后查看.
我的界面允许轻松交换/输出 - 编码到界面而不是实现等 ...
这很好,但他们只是执行实际的下载,就是这样.
PHP有一个非常有趣的回调叫stream_notification_callback,你可以在此处详细了解.
这看起来很棒,并且是一个有希望的步骤,直到有人查看PHP的源代码并发现,不幸的是,SSH2/SFTP 不允许与此集成.
感谢hek2mgl努力研究这个.
我的想法stream_notification_callback是每次检索数据时都会传递当前下载大小的通知; 因此,使用当前下载的金额和总文件大小提供计算百分比所需的数据.但这不适用于SSH2和SFTP ......
在我看来,这将是最难完成的.将数据下载到临时文件是可能的......这就是我设法挖掘的内容:http://ee.php.net/manual/en/function.fread.php#84115 - 但是将这种代码与进度条似乎很疯狂.
还有cURL,但是我没有看到通过SFTP暂停/恢复下载.如我错了请纠正我.
那么,我将如何使用PHP在浏览器中集成上述需求?忘记客户端的东西,只需将数据传输到浏览器就足够了,所以建议执行此操作会很棒.
小智 1
检查使用 PHP 下载大文件时服务器失败。可能会给你一些想法。
总结一下......答案之一建议修改 phpseclib 以在每次收到块时回显数据。另一个答案建议仅以块的形式下载并在下载时输出块。
看起来这非常符合您使用stream_notification_callback的想法。
祝你好运!