2012-09-17 111 views
0

我正在使用href鏈接從服務器下載文件。我想在文件從服務器上完全下載後做一些活動。像XMLHTTP一樣,我可以在href上設置一些回調函數,在完成請求時會調用它。獲取請求狀態

我的代碼是這樣的

///link to download report 
<div class='report-download'><a href='' id='downloadreq'></a></div> 
$("#report-download").click(OnClick); 

///onlick function 
functon OnClick() 
{ 
    ///start progress bar 
    $("#downloadreq").attr("href","8001.html?data=dowloadreport"); 
    //stop progress bar 

} 

我想說明,同時下載一個發生的進度條,我有一些代碼開始,當我插入代碼停止進度條停止進度條窗口。但是,在實際下載完成之前執行它並且進度條消失。我將如何確定報告下載已完成(或)是否可以確定下載已完成。下載報告的時間將取決於下載記錄的數量。所以我不能等待默認時間段並停止進度條。

+0

你的問題是什麼? –

回答

2

我認爲沒有辦法像event知道文件下載是否已經完成。通過PHP

  1. 打開文件,並通過HTTP
  2. 我想有一個變量像$_SESSION['lock'] = true;,將之前設置它開始發送發送給客戶端的瀏覽器:如果我是你,我會做這樣的事情流輸出
  3. 當文件下載得成品,我會解鎖一個被$_SESSION['lock'] = false;
  4. 變量文件下載過程中,我可以檢查lock值,看看是否該文件已經完成與否。讓我們說每個2-5秒通過AJAX。
  5. 當它完成 - lockfalse,我可以做任何需要,但我不知道如何顯示進度欄,甚至大約。

需要注意的是,如果你不使用的東西像$_SESSION,鎖定機構不會在所有工作,因爲腳本將每一次的新鮮運行,而無需近期變量的任何想法,等。

更新:

您可能需要使用$_SESSION['finished'],而不是$_SESSION['lock']這會更有意義,在理解的源代碼條款。

+0

感謝您的回覆。我們的服務器是一個支持HTTP並且不支持PHP的小型服務器應用程序。 – DAC84

+0

就像是一個嵌入式應用程序或服務器?你能告訴我你的服務器的名稱,看看它支持什麼嗎? (可能它應該支持服務器端的東西,比如CGI ...) – Mahdi

+0

感謝您對響應的興趣。但抱歉的老闆,它是一個完全依靠我們自己開發的服務器。只需監聽一個端口並提供來自瀏覽器的頁面請求並處理來自客戶端的其他請求。 – DAC84