如何使用php从服务器下载文件时显示进度条

时间:2015-12-19 06:18:07

标签: php progress-bar

<?php
$zip_file="test.zip";
$source="abc.com/$zip_file";
$data=file_get_contents("$source");
sleep(1);
//display the progress
$dest=file_put_contents($zip_file,$data);
?>

<div id='status'>progress ...</div>

我想显示下载%每1秒的进度条和下载的剩余%。

1 个答案:

答案 0 :(得分:0)

您的PHP将在服务器端运行。实际上,根据您的服务器实现,您的PHP可能会在服务器甚至愿意根据您的PHP输出开始编写响应之前完成运行。您不能让客户端纯粹通过PHP或任何服务器端代码查看下载进度。您必须通过监控下载的进度来实现进度条客户端。

可以这样想:您希望监控客户端对数据的接收,但PHP正在您的服务器上运行。您的服务器不知道客户端收到了多少数据。

如果您正在谈论的下载实际上是按照window.location = http://example.com/uri/for/your/php.php或链接或HTML表单下载整个新网页,那么您将没有任何机会向您显示进度客户。这完全取决于浏览器。

但是,如果下载是通过XMLHttpRequest进行的(大多数手动请求都是,我认为甚至是jQuery),那么你有一些希望。您可以从this answered question了解如何监控XMLHttpRequest下载的进度。