>目标:
我想让我的用户在我的网页上下载文件。我希望打开一个新窗口,并在那里显示或下载文件。
我的实现:
但是,此文件首先必须在服务器端生成,这可能需要一段时间。当用户单击按钮下载文件时,我会执行 ajax 调用并显示等待动画,直到收到响应。处理调用的控制器操作将生成文件 (PDF) 并返回文件结果。现在,在javascript中ajax回调的成功函数中,我获得了文件数据。
问题:我不知道我应该如何处理这些数据才能将其提供给用户。
解决方法:
现在我使用一种解决方法,即我不在 ajax 调用中返回文件,而是将其存储在会话中。在成功功能中,我执行window.open("/controller/getPDFFromSession")
将下载文件。但是,我宁愿不将会话用于此类事情。
提前谢谢。
问题:我不知道我应该如何处理这些数据才能将其提供给用户。
因此,您不应使用 AJAX 下载文件。您可以执行以下操作:
- 用户单击下载按钮
- 使用javascript,你显示一些进度图像,通知他他将不得不等待
- 使用 javascript,您可以生成隐藏的 iframe 并将其注入到 DOM 中,其
src
属性指向应该生成文件的控制器操作 - 加载iframe后,您可以隐藏进度图像