- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我觉得这值得一个问题,因为 StackOverflow 似乎没有足够的关于这个主题。
I love progress bars .但是,这次我想做一些不同的事情。我想用 PHP 执行以下操作,这个看起来比上一个难得多:
思考FileZilla ,但在浏览器中,用 PHP 构建。我不想破解 Apache 或添加任何 Apache mod。
有很多问题here , here , here和 here用于基本的 SFTP 下载。
这些文档 PHP's SSH2 extension (我现在正在使用 - 你通过 pecl 安装它)和替代品 PHPSecLib ,我没有使用,但稍后可能会研究。
我的界面允许轻松换入/换出 - 编码到界面而不是实现等...
这很好,但他们只是执行实际的下载,仅此而已。
PHP 有一个非常有趣的回调,叫做 stream_notification_callback
,which you can read more about here .
这看起来很棒,并且是很有前途的一步,直到有人查看 PHP 的源代码并发现不幸的是,SSH2/SFTP doesn't allow integration with this .
感谢 hek2mgl 为研究这一点付出的努力。
stream_notification_callback
的想法是在每次检索数据时传递当前下载大小的通知;因此给出了使用当前下载量和总文件大小计算百分比所需的数据。但这不适用于 SSH2 和 SFTP...
在我看来,这是最难完成的。将数据下载到临时文件是可能的......这是我设法挖掘的内容:http://ee.php.net/manual/en/function.fread.php#84115 - 但是将这种代码与进度条集成起来似乎很疯狂。
还有 cURL,但是我没有看到通过 SFTP 尽可能暂停/恢复下载。如果我错了,请纠正我。
那么,我将如何使用 PHP 在浏览器中集成上述要求?忘掉客户端的东西,只需将数据发送到浏览器就足够了,所以执行此操作的建议会很棒。
最佳答案
这是我从 this site 中提取的示例:
// Write from our remote stream to our local stream
$read = 0;
$fileSize = filesize("ssh2.sftp://$sftp/$fileName");
while ($read < $fileSize && ($buffer = fread($remoteStream, $fileSize - $read))) {
// Increase our bytes read
$read += strlen($buffer);
// Write to our local file
if (fwrite($localStream, $buffer) === FALSE) {
throw new Exception("Unable to write to local file: /localdir/$fileName");
}
}
由于您知道文件的大小并且您使用 fread 从中读取它,因此确定您的进度是微不足道的。
如果用户单击暂停按钮,可以通过检查您设置的 APC 中的值来暂停(在 iframe 中执行此操作,这样您就不会停止主脚本)。
关于PHP - SSH2 SFTP 下载有进展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15664234/
如果您登录到 sftp 服务器, 用户名和密码是否安全发送? 或者您是否必须进行基于证书的身份验证以确保整个传输都是加密的? 如果这是依赖于客户端的,那么您知道 Tumbleweed 和 WinSCP
我们如何在不安装任何软件/工具的情况下验证服务器上是否已授予 SFTP 访问权限? 最佳答案 大多数服务器有 curl和 scp安装,您可以使用它登录到 SFTP 服务器。要使用 curl 测试您的凭
我需要为 SFTP 执行校验和(为了数据完整性)。我希望这可以在 SFTP 文件传输期间完成 - 我意识到这可能取决于产品(仅供引用:使用 CLEO VLTrader),但想知道这是否是惯例? 我也在
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 8年前关闭。 Improve this que
我目前有一个 SFTP 脚本,它通过每天在 cron 上运行的 SSH 将最新版本的文件上传到服务器。但是我总是收到这样的电子邮件(我将服务器更改为 example.com fyi) /etc/cro
是否有使用“sftp”将远程服务器上的远程文件移动到另一个目录(在同一远程服务器上)的单行程序? 最佳答案 对于sftp,它是rename。如果你要求调用 sftp,使用 bash 就像是 sftp
嗨,我需要使用 NetSuite sFtp 功能从保存的搜索和 ftp'it 创建一个文件到另一台服务器。我想知道返回的数据后如何创建文件并将其传递给 FTP 对象?它将是一种csv形式,我可以将
我在 SFTP 位置创建了一个目录,我想将文件从一个 SFTP 目录移动到另一个目录,但是 cp那里不支持命令。 我怎样才能做到这一点? 最佳答案 核心 SFTP 协议(protocol)不支持复制远
我正在努力解决的问题有点复杂。我先向您解释设置环境。 我正在使用 PHPStorm 来处理 Symony2 项目。 我的 Apache 托管在通过“部署工具”连接到 PHPStorm 的 Debian
使用FTP,一切正常...但是.. 当我使用 SFTP 时,它成功连接,甚至当我使用“上传按钮”时,它成功上传文件...但是当我编辑+保存文件,它开始自动上传更改时,它无法上传(红色消息:文件....
我想将文件从远程服务器复制到不同目录中。例如,我想一次运行这4个命令。 scp remote:A/1.txt local:A/1.txt scp remote:A/2.txt local:A/2.tx
我可以使用 ssh/sftp(不带 -b 选项)登录我的 Remote sftp root@192.168.7.2 但是当我尝试 sftp -b commands.tmp root@192.168.7
我正在使用 Airflow v1.9rc5 中的 sftp_operator。我试图通过 SFTP 获取两个文件,但我得到: 错误 - 无法连接到主机:192.168.56.101,错误:没有可用的身
我想将 .png 文件从我计算机上的目录传输到远程服务器上的目录。 我必须使用 SFTP 来保护文件和传输模式。而且我已经有一个 UNIX 脚本 (.ksh) 文件以正常模式复制文件。如何在 SFTP
我正在使用 JSch 作为 SFTP 客户端,现在由于某些安全限制,我需要启用被动模式。 但我找不到启用被动模式的方法。 有人可以告诉我该怎么做吗? 最佳答案 “被动模式”是 FTP 协议(proto
我在 DigitalOcean 上有一个 Droplet,并创建了 SSH key 。我的 SSH 和 SFTP 访问与 Mac OSX 终端和传输完美配合。 但由于某种原因,SFTP 无法与 PHP
最近,我正在使用 SharpSSH 来处理远程文件。 SharpSSH 提供了用于删除远程目录的 rmdir API,但我发现当目录不为空时它会抛出异常并显示消息“Permission denied”
尝试通过 SFTP 连接到另一个集群中的文件,但没有任何效果。 Current spark version is : '2.2.0.2.6.4.0-91 . scala :2.11.8' . 下面是数
我已经使用 Package Installer (control+shift+p) 安装了 SFTP,但是现在当我点击“添加新服务器”时,无论我是哪个文件,它都只是添加了代码/json,我必须输入我的
我使用 DSL 配置和 spring。 我的路线如下: @Component public class UploadRoutesDefinition extends RouteBuilder {
我是一名优秀的程序员,十分优秀!