2009-09-28 52 views
0

我遇到問題,我的應用程序工作如下。生成CSV文件,然後強制文件下載

首先向用戶反饋生成csv文件已經開始。

例如。 echo 'Building of csv file started';

然後我建立了csv文件。

現在我想強制文件下載,這完美的作品。

這是我的代碼

header('Content-Type: application/csv'); 
    header('Content-Disposition:attachment;filename='.$year.'_'.$month.'_'.'export.csv'); 
    header('Pragma: no-cache'); 

    echo readfile($myFile); 

沒有第一回聲「CSV文件的開工建設」獲得包括CSV文件,我不知道該怎麼exlude它。

回答

3

該解決方案非常簡單。 由於您需要兩種不同的標題類型,您必須創建2個不同的頁面。

第一頁顯示「建立csv文件已啓動」幷包含帶有第二頁和第二頁的iframe以及真正的csv文件和附件標題。

+1

只需重定向到CSV下載頁面也可以。 – 2009-09-28 15:53:51

+0

是的JavaScript重定向可以工作,但它會要求你有JavaScript激活。 HTTP重定向不起作用,因爲他想顯示一條消息並提供下載。 – jantimon 2009-09-28 15:57:55

0

你回聲的任何內容都將進入CSV。您不能在同一個腳本中回顯並輸出CSV。

1

您無法強制通過HTTP下載任何內容。這不是HTTP的工作方式。如果你想要下載某個東西,那麼它必須是一個響應用戶請求的資產。這意味着用戶必須明確地觸發下載請求,或下載必須響應AJAX請求。

0

用戶在您的頁面上 - 他們點擊「build CSV」鏈接。然後使用一些非常非常基本的JS,您可以在服務器端PHP上顯示一條消息/模式/彈出窗口,指出「構建csv文件已啓動...」,您可以從實際生成CSV的頁面中刪除該回顯用戶將被提示該文件。