2010-08-29 250 views
3

,因爲它需要一些時間來準備數據的內容被下載,我想顯示消息「準備要下載的文件」當用戶提交請求軌如何知道什麼時候由send_file完成

然後當該文件已經準備好,我用由send_file發送數據

一旦完成,我需要清除信息

非常感謝

+1

我想知道如何做到這一點。任何想法的人? – digitalWestie 2010-12-03 14:07:53

回答

5

這裏是我會做什麼。

1.創建一個prepare_file行動

首先,我將創建一個動作,他們的工作也只是到創建該文件,而不是渲染HTML,它會呈現一個JSON對象與文件名這是創建的。

2.使用AJAX調用prepare_file行動

在客戶端,當用戶點擊下載的文件,你顯示消息,「正在準備下載...」,只是做一個AJAX請求到那個行動。您通過AJAX返回的響應是創建的文件的名稱。

3.重定向到文件下載

最後,你可以隱藏準備下載信息和瀏覽器重定向到通過JavaScript文件下載使用時創建的文件的名稱。您將在此操作中使用send_file

我知道,在問題中,您還希望能夠在文件下載時向用戶顯示一條消息,並在完成時顯示另一條消息。但是,除非您編寫自己的客戶端下載管理器,否則這是不可能的。瀏覽器完全處理文件下載,用戶將在瀏覽器中看到文件正在下載以及進度是什麼。所以,我明白你來自哪裏,但你不應該感覺用戶不知道發生了什麼。

至少在這個解決方案中,當文件正在準備中時,他們向他們顯示一條消息,然後一旦該消息消失,他們將從瀏覽器獲得下載文件對話框。

如果您需要關於如何做到這一點的實際代碼示例的幫助,請告訴我。

相關問題