rails如何知道send_file何时完成

时间:2010-08-29 07:15:46

标签: ruby-on-rails sendfile

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

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

一旦完成,我需要清除消息

非常感谢

1 个答案:

答案 0 :(得分:5)

这就是我要做的事。

<强> 1。创建prepare_file操作

首先,我将创建一个动作,其作用只是创建文件而不是呈现HTML,它将呈现一个JSON对象,其中包含已创建文件的名称。

<强> 2。使用AJAX调用prepare_file操作

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

第3。重定向到文件下载

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

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

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

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