Rails在文件上传期间从Controller更新进度条

时间:2017-02-05 02:06:03

标签: ruby-on-rails ajax

我仍然是网络编程的新手,所以请耐心等待。

rails 5.0应用程序目前工作正常并上传包含产品库存的.csv文件。问题是,如果此文件非常大,则上传可能需要一分多钟,而客户端上的人可能认为服务器崩溃或丢失了互联网连接。

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

我希望服务器每读入N%的文件都会向视图发送更新,因此视图可以显示和更新进度条。我认为这可以通过AJAX调用和JSON或Javascript来实现,但我不确定。这是一种合理的方法吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

这至少是我对它的看法。我希望这会有所帮助。