在php脚本准备下载文件时添加加载栏

时间:2011-09-19 22:50:32

标签: php progress-bar text-files

我是php的新手但是设法创建了一个名为“welcome.php”的页面,它从表单中获取您的名字和姓氏,然后将它们放在一个简单的文本文件中并发回给您下载:

<?php 
if ($_POST) {

    header("Content-Type: application/txt");
    header('Content-Disposition: attachment; filename="welcome.txt"');
    echo "Welcome, ";
    echo $_POST['firstName']. " " . $_POST['lastName']; 

    // exit the script to make the form not appear in the downloaded file
    exit;
}

?>

<form action="" method="post">
First Name:  <input type="text" name="firstName" /><br />
Last Name: <input type="text" name="lastName" /><br />
<input type="submit" name="submit" value="Submit me!" />
</form>

我想要做的是在生成此文本文件时添加进度条,当弹出“保存文件”对话框时达到100%。我知道在这种情况下加载时间很短,但我稍后会修改它以制作更大的文本文件。我想知道你是否可以指出我正确的方向或提供几行代码来帮助,在我的脑海里我只学习了2天的PHP。我相信你可以使用一些名为flush的东西,但我不知道如何将它整合到我的页面中。谢谢!

请注意,我的页面也有轻微的故障,因为文本文件也会输出表单的html,有没有人知道如何阻止这种情况发生?

2 个答案:

答案 0 :(得分:0)

实际上,PHP没有提供这样的功能。

要显示进度条,您可以尝试:

  • 执行长时间运行的文件生成过程时,在当前用户会话

  • 中保存百分比完成值
  • 在显示下载表单的页面上,添加一个 iFrame ,它会调用 progress.php 脚本

  • progress.php脚本需要生成网页,需要自动重新加载

  • progress.php脚本需要从会话中读取当前进度值,并绘制进度条图形,直观地表示进度。

虽然这是一个仅限PHP的解决方案,但您可能会使用JS / AJAX准备另一个解决方案。

HTML自动重新加载应该是这样的:

<meta http-equiv="refresh" content="1; URL=http://myServer.com/progress.php">

答案 1 :(得分:0)

您可以使用http://jqueryui.com/demos/progressbar/它是基于JavaScript的,您可以通过AJAX发送您的进度,就像Stefan说的那样。