2011-05-17 151 views
8

目標:
我不想讓我的用戶下載在我的網頁文件。我想要打開一個新窗口並將文件顯示或下載到那裏。處理一個ASP.NET MVC FileResult在(jQuery的)的Ajax調用返回

我的實現:
這個文件但是,首先必須在服務器端生成,這可能需要一段時間。當用戶點擊按鈕下載文件時,我會做一個ajax調用並顯示一個等待的動畫,直到我收到響應。處理該調用的控制器操作將生成文件(PDF)並返回FileResult。現在在javascript中我的ajax回調函數的成功,我得到了文件數據。

問題:我不知道我應該如何處理這些數據以獲得它給用戶。

解決方法:
現在我使用的替代方案,我不回在Ajax調用的文件,但它存儲在會話。在成功的功能中,我做window.open("/controller/getPDFFromSession")這將下載文件。但是,我寧願不使用會話來處理這些事情。

在此先感謝。

回答

7

問題:我不知道我應該如何處理這些數據以獲得它給用戶。

由於這個原因,您不應該使用AJAX下載文件。你可以做到以下幾點:

  1. 用戶點擊下載按鈕
  2. 使用JavaScript你展示一些進展圖像通知他說,他將不得不等待
  3. 使用您生成JavaScript,並注入一個隱藏的iframe成一旦iframe中被加載,你可以隱藏進展圖像
+0

謝謝您的回答有其src屬性指向自己生成的文件

  • 控制器動作的DOM。實際上這很酷。唯一的問題是我需要在新窗口中打開文件。如果瀏覽器下載該文件,則可以。但是,我不希望瀏覽器在當前窗口或iFrame中打開PDF。 – 2011-05-18 05:28:18

  • +2

    @Matthijs Wessels,只需將'Content-Disposition'標題設置爲'attachment; filename = test.pdf'並且不會發生。用戶將被提示保存文件。 – 2011-05-18 05:55:47

    +0

    @DarinDimitrov你能否進一步解釋一下爲什麼我們應該避免使用AJAX進行文件上傳?謝謝.. – 2016-10-10 08:03:22

    相關問題