我是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%。我知道在这种情况下加载时间非常短,但我稍后会修改它以生成更大的文本文件。我想知道你是否可以指出我在正确的方向或提供几行代码来帮助,在我的脑海中,我只学习php 2天。我相信你可以使用一个叫flush的东西,但我不知道如何将它集成到我的页面中。谢谢!
请注意,我的页面也有一个小故障,文本文件也输出表单的html,有人知道如何阻止这种情况发生吗?
实际上,PHP并没有提供这样的特性。
要显示进度条,您可以这样做:
-
在执行长时间运行的文件生成过程时,在当前用户会话
中保存percentage-done值 在显示下载表单的页面上,添加一个iFrame,它调用progress.php脚本
progress.php脚本需要生成网页,需要自动加载
progress.php脚本需要从会话中读取当前的进度值并绘制一个进度条图形,它直观地表示进度
虽然这是一个仅使用php的解决方案,但您可以使用JS/AJAX准备另一个。
HTML的自动加载应该是这样的:
<meta http-equiv="refresh" content="1; URL=http://myServer.com/progress.php">
你可以使用http://jqueryui.com/demos/progressbar/,它是基于JavaScript的,你可以通过AJAX发送你的进度,就像Stefan说的。