2011-09-19 52 views
1

我是一個新手到PHP,但設法創建一個頁面,我稱之爲「welcome.php」,從一個窗體的名字和姓氏,然後把這些簡單的文本文件,並將其發送給您下載:添加一個加載欄,而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,有誰知道如何阻止這種情況發生?

+1

該文本文件包含表單,因爲在'echo'調用之後,PHP解析器從'if'語句中出來,然後''echo出所有的HTML。你需要添加一個'else'來表示'$ _POST'然後發送文本文件,否則繼續顯示HTML頁面。 – Alex

+0

@Alex:我解決了這個小問題。 – SteAp

+0

所以我想我已經通過迴應html這樣的解決了它? 'else {echo'

「;} – Lars

回答

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"> 
+0

感謝您的答覆。我只是在查找「完成百分比」功能時遇到了一些麻煩。一旦我明白了,我是否認爲這只是一個200ms的調用而已,然後將它的值傳遞給jqueryui進度條之類的東西,就像Iony建議的那樣?我非常感謝你的貢獻! – Lars

+0

看看這裏:http://db.org/demo/2003/02/17/progress-bar/。抱歉。目前沒有其他方便的資源。 – SteAp

+0

此外,PHP的GD庫是你的朋友:http://www.php.net/manual/en/image.examples-png.php – SteAp

0

你可以使用http://jqueryui.com/demos/progressbar/它是基於JavaScript和您可以通過AJAX發送你的進步,像斯特凡說。

+0

謝謝,看起來真的很好 – Lars

+0

...只要JS啓用。這些天應該可以在任何瀏覽器上使用。 – SteAp