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