【发布时间】:2011-04-05 08:47:22
【问题描述】:
由于准备要下载的数据内容需要一些时间,所以我想在用户提交请求时显示一条消息“准备下载文件”
然后当文件准备好后,我使用 send_file 发送数据
完成后,我需要清除消息
非常感谢
【问题讨论】:
-
我也想知道怎么做。有什么想法吗?
由于准备要下载的数据内容需要一些时间,所以我想在用户提交请求时显示一条消息“准备下载文件”
然后当文件准备好后,我使用 send_file 发送数据
完成后,我需要清除消息
非常感谢
【问题讨论】:
这就是我要做的。
1.创建 prepare_file 操作
首先,我将创建一个动作,其工作只是创建文件,而不是呈现 HTML,它会呈现一个带有所创建文件名称的 JSON 对象。
2。使用 AJAX 调用 prepare_file 操作
在客户端,当用户单击下载文件时,您会显示消息“正在准备下载...”,然后对该操作执行 AJAX 请求。您将通过 AJAX 得到的响应是创建的文件的名称。
3.重定向到文件下载
最后,您可以隐藏准备下载消息,并通过 JavaScript 将浏览器重定向到文件下载,并使用已创建文件的名称。您将在此操作中使用 send_file。
我知道,在问题中,您还希望能够在文件下载时向用户显示一条消息,并在下载完成时向用户显示另一条消息。但是,除非您编写自己的客户端下载管理器,否则这是不可能的。浏览器完全处理文件下载,用户将在浏览器中看到文件正在下载以及进度如何。所以,我了解您来自哪里,但您不应该觉得用户没有被告知正在发生的事情。
至少使用此解决方案,您会在准备文件时向他们显示一条消息,然后一旦该消息消失,他们就会从浏览器中获取下载文件对话框。
如果您需要有关如何执行此操作的实际代码示例的帮助,请告诉我。
【讨论】: