处理(jQuery)Ajax调用中返回的ASP.NET MVC FileResult

时间:2011-05-17 09:10:26

标签: ajax asp.net-mvc-3 jquery file

目标:
我想让我的用户在我的网页上下载文件。我想要一个新窗口打开,并在那里显示或下载文件。

我的实施:
但是,首先必须在服务器端生成此文件,这可能需要一段时间。当用户单击按钮下载文件时,我会进行ajax调用并显示等待动画,直到我收到回复。处理调用的控制器操作将生成文件(PDF)并返回FileResult。现在在我的ajax回调函数的成功函数中,我得到了文件数据。

问题:我不知道我应该如何处理这些数据以便将其传达给用户。

解决方法:
现在我使用一种解决方法,我不会在ajax调用中返回该文件,而是将其存储在会话中。在succes函数中,我执行window.open("/controller/getPDFFromSession")下载文件。但是,我不想将会话用于这类事情。

提前致谢。

1 个答案:

答案 0 :(得分:7)

  

问题:我不知道我应该如何处理这些数据,以便将其传达给用户。

出于这个原因,您不应该使用AJAX来下载文件。您可以执行以下操作:

  1. 用户点击下载按钮
  2. 使用javascript显示一些进度图像,通知他必须等待
  3. 使用javascript生成并将隐藏的iframe注入到DOM中,其src属性指向应该生成文件的控制器操作
  4. 加载iframe后,您可以隐藏进度图片