【问题标题】:rails how to know when send_file donerails 如何知道 send_file 何时完成
【发布时间】:2011-04-05 08:47:22
【问题描述】:

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

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

完成后,我需要清除消息

非常感谢

【问题讨论】:

  • 我也想知道怎么做。有什么想法吗?

标签: ruby-on-rails sendfile


【解决方案1】:

这就是我要做的。

1.创建 prepare_file 操作

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

2。使用 AJAX 调用 prepare_file 操作

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

3.重定向到文件下载

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2021-04-25
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多