rails如何知道send_file何时完成

and*_*ndy 3 ruby-on-rails sendfile

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

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

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

非常感谢

don*_*ngg 5

这就是我要做的.

1.创建prepare_file操作

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

2.使用AJAX调用prepare_file操作

在客户端上,当用户单击以下载文件时,您将显示消息"准备下载...",并对该操作执行AJAX请求.您将通过AJAX获得的响应是​​创建的文件的名称.

3.重定向到文件下载

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

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

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

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