2009-01-15 103 views
7

快速(並希望容易)問題:我需要觸發一個由PHP文件生成的PDF文件的下載。我能做到這一點:正確的方式來觸發文件下載(在PHP中)?

<a href="download.php">Download</a> 

但我應該這樣做另一種方式? Javascript可能?上述工作,但窗口顯示「加載...」,直到下載開始。我想向用戶提供一些反饋意見,指出發生了什麼。

想法?

注意:我已經有從服務器發送文件的代碼。它完美的作品。這個問題只是關於如何最好地從客戶端調用該腳本。

一些網站有自動啓動的下載。他們如何做到這一點?

直接URL的問題是,如果PHP腳本錯誤,它會替換現有頁面的內容,這不是我想要的。

+1

這個問題與PHP無關,它的標題,措辭和標記誤導性吸引了訪問者尋找完全不同的東西。我寫這篇文章是因爲這是我在尋找真正關於PHP的東西時得到的第一個結果。我試圖編輯,但我的編輯被拒絕:(所以我好心地問原始的海報或其他誰有足夠的特權從本文中刪除任何對PHP的引用 – Tom 2012-08-23 13:12:41

+0

發生在我身上也是湯姆,編輯 – 2012-12-24 16:19:08

回答

13

編輯

是JavaScript的,是這樣的:

<a href="download.php" onclick="this.innerHTML='Downloading..'; downloadPdf(this);">Download</a> 

如果你需要真正的理解當下載開始時,你可能需要調用一個iframe,然後在其上使用「onload」事件..例如:

// javascript 
function downloadPdf(el) { 
    var iframe = document.createElement("iframe"); 
    iframe.src = "download.php"; 
    iframe.onload = function() { 
     // iframe has finished loading, download has started 
     el.innerHTML = "Download"; 
    } 
    iframe.style.display = "none"; 
    document.body.appendChild(iframe); 
} 
2

通過使用onclick事件處理程序顯示一個旋轉的GIF假的

<a href="download.php" onclick="ShowDownloading();">Download</a> 
3

您下載的解決方案沒問題。您可能需要考慮向用戶提供一些視覺反饋,也許可以通過使用JavaScript在當前頁面上顯示「正在下載,請稍候消息」,然後通過onclick處理程序單擊該鏈接。或者只是簡單地指出下載可能需要一些時間才能在鏈接旁邊開始。由於IE會卸載頁面,停止任何GIF動畫,我更喜歡文本下載的文本指示。

2

自動啓動下載通常用一個meta標籤正常頁面內:

<META HTTP-EQUIV="REFRESH" CONTENT="10.0;URL=download.php"> 

這個例子將重定向瀏覽器在10秒內的download.php。