ruby-on-rails - Rails 6 + Ruby 2.7 - 我如何跟踪我的视频/图像上传大小,以便我知道总共上传了多少 MB 文件
问题描述
MY Rails 6应用程序使用ruby@2.7并carrierwave
上传图像和视频。在这里,我正在寻找类似于我们的基本 Rails counter_cache机制的东西,它可以帮助我跟踪用户完成的上传的总大小和到目前为止剩余的总大小。
Rails 应用程序为每个用户提供了 1GB 的默认大小来上传图像/视频(上传到 S3),因此也有必要跟踪和维护每个上传大小,以便这种机制有助于警告用户他已经消费了给定限制以及为他消耗/留下多少尺寸。
到目前为止我做了什么!
每个user
has many
图像和视频。因此,在每次上传时,我都会在每个类中触发回调*_uploader.rb
以获取total file size
并将其添加到 中已经存在的前一个中,并将user.total_size_consumed
0 作为默认值。
只是想知道是否还有其他方法可以实现相同的效果,因为我也需要实现转换(MB/GB/TB)。
提前致谢。
解决方案
你有一个上传项目类和表?您应该向该表添加一个字段upload_size
并使用回调将上传大小存储在那里。
这意味着当用户删除上传时,您将能够通过before_destroy
在项目模型中使用回调来减少他上传的总大小。
您还可以相当轻松地为用户重置上传的总大小......只是upload_size
所有上传项目的总和。
推荐阅读
- reactjs - react-router 在使用 GoDaddy 上托管的 React 应用程序刷新页面时抛出 404
- magento - 无法使用 graphql 获取我的 magento 2.3.3 数据
- unit-testing - React Native:在开玩笑的单元测试中更新上下文 api 值
- java - 如何将用户名和密码传递给 KafkaConsumer?
- angular - Express 应用程序作为 IIS 子站点无法加载静态文件
- android - 提交表单时可能出现未处理的 Promise Rejection (id: 0)
- reactjs - setState 没有被触发
- python - Sublime Text 3 中的“打印”语法无效
- python - Django:动态/以编程方式设置模型字段
- unity3d - 为什么协程继承自 IEnumerator?