3

由于准备要下载的数据内容需要一些时间,所以我想在用户提交请求时显示一条消息“准备下载文件”

然后当文件准备好时,我使用 send_file 发送数据

完成后,我需要清除消息

非常感谢

4

1 回答 1

5

这就是我要做的。

1. 创建 prepare_file 动作

首先,我将创建一个动作,其工作只是创建文件,而不是呈现 HTML,它将呈现一个带有所创建文件名称的 JSON 对象。

2.使用AJAX调用prepare_file动作

在客户端上,当用户单击下载文件时,您会显示消息“正在准备下载...”,然后对该操作执行 AJAX 请求。您将通过 AJAX 得到的响应是创建的文件的名称。

3.重定向到文件下载

最后,您可以隐藏准备下载消息并将浏览器重定向到通过 JavaScript 使用已创建文件的名称下载文件。您将send_file在此操作中使用。

我知道,在问题中,您还希望能够在文件下载时向用户显示一条消息,并在完成时向用户显示另一条消息。但是,除非您编写自己的客户端下载管理器,否则这是不可能的。浏览器完全处理文件下载,用户将在浏览器中看到文件正在下载以及进度如何。所以,我知道你来自哪里,但你不应该觉得用户没有被告知正在发生的事情。

至少使用此解决方案,您会在准备文件时向他们显示一条消息,然后一旦该消息消失,他们将从浏览器获取下载文件对话框。

如果您需要有关如何执行此操作的实际代码示例的帮助,请告诉我。

于 2010-12-20T16:14:34.633 回答