[英]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.