Rails 5.2 Active Storage:如何确定并确保没有直接上传的浮动Blob

问题描述 投票:0回答:2

我们最近将我们的应用程序升级到Rails 5.2,以使用主动存储直接上传功能。

guide将直接上传与我们现有的JS拖放集成在一起之后,我们就能够使上传正常进行。我们获取返回的签名ID,并将其添加到隐藏字段中。然后,在提交表单时,我们创建一个新记录,并将blobsigned_id关联以创建关联。

但是,如果用户不进行表单提交,是否有建议的方法来确保清除没有模型关联的Blob /文件?棘手的部分似乎是如何确定何时清除斑点。

ruby-on-rails rails-activestorage
2个回答
1
投票

清除过程取决于您的基础存储,例如,在S3上,您可以在文件系统上为临时Blob定义对象过期策略-定期从临时文件夹中删除所有早于某个限制的文件。

关于应清除的临时Blob年龄-这还取决于您的应用程序。显然,它应该比用户填写表单的时间还要长一些。如果这些延迟时间没有问题,可以将阈值设置为大约24小时甚至更长,然后每天清除一次,这样用户肯定不会遇到丢失的文件。


0
投票

我经历了同样的问题,最后得出结论,没有理想的方法:由于它取决于输入的用户缺乏,因此可以预期只能在某个特定的超时后清除Blob。 。

例如,它可能是类似cron的工作。

虽然是单线的:

ActiveStorage::Blob.unattached.each(&:purge)

((注:我也在MD5计算上花了很多时间,如果您的情况,请看一下blog article I posted on MD5 computation in javascript

© www.soinside.com 2019 - 2024. All rights reserved.