【问题标题】:Rails update Progress Bar from Controller during file uploadRails 在文件上传期间从控制器更新进度条
【发布时间】:2017-02-05 02:06:03
【问题描述】:

我对网络编程还是比较陌生,所以请多多包涵。

Rails 5.0 应用程序目前运行良好,并上传包含产品库存的 .csv 文件。问题是如果这个文件非常大,上传可能需要一分钟以上,客户端上的人可能会认为服务器崩溃或他们失去了互联网连接。

当前的实现有一个带有用于选择文件的表单的视图。选择后,控制器将读入文件。视图仍在屏幕上,但此时控制已转移到服务器。

我想让服务器每读入 N% 的文件就向视图发送一次更新,以便视图可以显示和更新进度条。我认为这可以通过 AJAX 调用和 JSON 或 Javascript 实现,但对此不确定。这是一个合理的方法吗?

【问题讨论】:

    标签: ruby-on-rails ajax


    【解决方案1】:

    根据您的描述,似乎有两种方法可以解决此问题。

    1) 使用 ActionCable 并为该特定文件发送进度消息。该消息可以包含文件已处理量的百分比。您可以阅读 ActionCable 以及如何开始使用 here

    2) 您可以使用间隔发生的 ajax 调用。基本上,会有 javascript 代码在您的应用程序中调用路由来检查您正在处理的文件的进度。因此,在处理文件的控制器操作中,您将在处理文件时存储进度。它可以在Redis 中,也可以在 rails 应用程序的内存中。只要它是可以从不同的请求访问的东西。它甚至可能存储在session 中,尽管我之前没有像这样测试过它。您的客户端 javascript 将调用在间隔内报告进度的路由。

    这至少是我的想法。我希望这会有所帮助。

    【讨论】:

    • 谢谢阿贾巴尔。我不知道 ActionCable。
    猜你喜欢
    • 2013-07-06
    • 2012-09-02
    • 1970-01-01
    • 2012-08-06
    • 2021-11-16
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多