小编典典

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

ajax

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

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

问题: 我不知道如何处理这些数据才能将其提供给用户。

解决方法:
现在,我使用一种解决方法,即不通过ajax调用返回文件,而是将其存储在会话中。在成功功能中,我window.open("/controller/getPDFFromSession")将下载文件。但是,我不希望将会话用于此类事情。

提前致谢。


阅读 810

收藏
2020-07-26

共1个答案

小编典典

问题:我不知道如何处理这些数据才能将其提供给用户。

因此,您不应该使用AJAX下载文件。您可以执行以下操作:

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