首页 > 解决方案 > Rails 6 + Ruby 2.7 - 我如何跟踪我的视频/图像上传大小,以便我知道总共上传了多少 MB 文件

问题描述

MY Rails 6应用程序使用ruby​​@2.7carrierwave上传图像和视频。在这里,我正在寻找类似于我们的基本 Rails counter_cache机制的东西,它可以帮助我跟踪用户完成的上传的总大小和到目前为止剩余的总大小

Rails 应用程序为每个用户提供了 1GB 的默认大小来上传图像/视频(上传到 S3),因此也有必要跟踪和维护每个上传大小,以便这种机制有助于警告用户他已经消费了给定限制以及为他消耗/留下多少尺寸。

到目前为止我做了什么!

每个user has many图像和视频。因此,在每次上传时,我都会在每个类中触发回调*_uploader.rb以获取total file size并将其添加到 中已经存在的前一个中,并将user.total_size_consumed0 作为默认值。

只是想知道是否还有其他方法可以实现相同的效果,因为我也需要实现转换(MB/GB/TB)。

提前致谢。

标签: ruby-on-railsrubyruby-on-rails-4ruby-on-rails-5carrierwave

解决方案


你有一个上传项目类和表?您应该向该表添加一个字段upload_size并使用回调将上传大小存储在那里。

这意味着当用户删除上传时,您将能够通过before_destroy在项目模型中使用回调来减少他上传的总大小。

您还可以相当轻松地为用户重置上传的总大小......只是upload_size所有上传项目的总和。


推荐阅读