0

我有一个通过 FTP 将大型媒体文件推送到远程服务器的 php 脚本。这工作顺利。我想增强这一点,并让它报告给启动传输的 ajax 客户端。基本上,在每次传输后报告如下内容:

1/12:文件 xbacd.dat 已成功复制到 /dir1/sub2/ - 2.2Mb

2/12:在 /var/www/files 中找不到文件 Impact_analy.ppt - 正在恢复。

3/12:文件 abc_consult.doc 已成功复制到 /dir1/sub3/ - 8.2Mb

另一方面,Ajax 处理程序应该在它到达时在 div 中显示它。

我对以下代码没有运气,因此切换到 AJAX。

    ob_start();

    require_once 'init.php';

    while(files){

    // Transfer code

    // status
    echo "$idx/$count: File $f has been copied successfully to $tar_dir - $s";

    ob_flush;

flush;

}
4

1 回答 1

1

我会告诉你我曾经做过什么,我不确定这是最好的解决方案,但它确实有效。您应该有一个 iFrame 并将表单的目标设置为 iFrame

<script>
function showMsg(msg){
   alert(msg);
}
</script>
<form action="theCommandHandler.php" method="post" target="myIframe">
  <input type="submit" value="Do A Command" />
</form>

<iframe name="myIframe"></iframe>

发布到 theCommandHandler.php 后,您的 php 脚本中应该有这样一行代码:

echo "<script>parent.showMsg('$idx/$count: File $f has been copied successfully to $tar_dir - $s');</script>";

您可以将任意数量的消息发送回客户端,它们将调用父文档上的 showMsg 函数。

于 2013-08-26T06:51:40.457 回答