繁体   English   中英

Rails 在文件上传期间从控制器更新进度条

[英]Rails update Progress Bar from Controller during file upload

我对网络编程还是比较陌生,所以请耐心等待。

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

当前的实现有一个视图,其中包含一个用于选择文件的表单。 选择后,控制器会读入文件。 视图仍然位于屏幕上,但此时控制权已转移到服务器。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM