【问题标题】:Rails 5.2 Active Storage: How to determine and ensure that there are no floating blobs with direct uploadsRails 5.2 Active Storage:如何确定并确保没有直接上传的浮动 blob
【发布时间】:2020-02-12 18:01:12
【问题描述】:

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

按照guide 将直接上传与我们现有的 JS 拖放集成,我们已经能够让上传工作。我们获取返回的签名 ID,并将其添加到 hidden fields 。然后在提交表单时,我们创建一个新记录并关联 blobssigned_id 以创建关联。

但是,如果用户没有完成表单提交,是否有推荐的方法来确保清除没有模型关联的 blob/文件?棘手的部分似乎是如何确定何时清除 blob。

【问题讨论】:

    标签: ruby-on-rails rails-activestorage


    【解决方案1】:

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

    至于应清除的临时 blob 年龄 - 这也取决于您的应用程序。显然,它应该比用户填写表格的时间长加上一些边距。如果您对这些持续时间更长一点没有问题 - 您可以将阈值设置为 24 小时左右甚至更长时间,并每天清除一次,这样用户肯定不会遇到文件丢失的情况。

    【讨论】:

      【解决方案2】:

      我经历了同样的问题,最后得出的结论是没有理想的方法:因为它取决于用户不存在输入,所以可以预期 Blob 只能在某个任意超时。

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

      虽然可以通过单线删除所有悬空的 Blob:

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

      (注意:我也花了一些时间在 MD5 计算上,如果是你的情况,看看blog article I posted on MD5 computation in javascript

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-01
        • 2023-03-13
        • 2022-11-11
        • 1970-01-01
        • 2018-09-05
        • 1970-01-01
        • 2023-03-07
        • 1970-01-01
        相关资源
        最近更新 更多