使用PHP的exec()函数显示使用Ajax的wget下载进度?

时间:2014-05-23 21:45:48

标签: php ajax exec

我正在开发一个从ZippyShare下载文件的辅助项目。我有一个基本的PHP文件,但是我想用Ajax实现一个下载状态指示器。也许这里的某个人能够帮助我吗?这是我找到的here

的wget命令模板
wget <download_link> \
--referer='<referrer>' \
--cookies=off --header "Cookie: JSESSIONID=<session_id>" \
--user-agent='Mozilla/5.0 (Windows NT 6.0) Gecko/20100101 Firefox/14.0.1'

所以我创建了一个非常基本的PHP文件来演示工作下载:

<?php 
if (isset($_POST['submit'])) { 
   $download_link = $_POST['download_link'];
   $download_referer = $_POST['download_referer'];
   $session_id = $_POST['session_id'];
   exec("wget ".$download_link." \ --referer='".$download_referer."' \ --cookies=off --header \"Cookie: JSESSIONID=".$session_id."\" \ --user-agent='Mozilla/5.0 (Windows NT 6.0) Gecko/20100101 Firefox/14.0.1'");
} else {
?>

<form method="POST" action="">
    Download Link: <input type="text" id="download_link" name="download_link"><br><br>
    Referrer: <input type="text" id="download_referer" name="download_referer"><br><br>
    Session ID: <input type="text" id="session_id" name="session_id"><br><br>
    <input type="submit" id="submit" name="submit" value="Download File">
</form>

<?php
}
?>

现在我一直坚持如何在这个上集成一个状态指示器,我尝试做类似this的事情,但它没有多大帮助,因为我希望进度条动态地改变下载进度,而不是将其设置为值。

有人可以帮忙吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以(并且应该)使用PHP中的curl而不是使用exec执行自定义命令。

使用curl,您可以侦听文件流并运行相应的运行进度函数。

PHP/cURL download progress monitoring