将现有文件迁移到Active Storage时如何计算校验和

时间:2019-07-04 13:30:19

标签: ruby-on-rails ruby amazon-s3 carrierwave rails-activestorage

我正在将S3作为文件系统的Carrierwave迁移到Rails 5.2.3应用程序中的Active Storage。问题是我的一些文件(视频文件)很大,我不能简单地下载它们来计算校验和。

对于小文件,我可能可以使用ETagfetched using the API)。但是,它不适用于较大的文件。根据{{​​3}}:

  

如果通过“分段上传”或“部分复制”操作创建了对象,则无论采用哪种加密方法,ETag都不是MD5摘要。

是否有足够快的方法来获取文件的校验和?还是我需要猴子修补the documentation方法和所有相关代码(例如JavaScript lib等)?

我想避免覆盖Active Storage代码,因为(1)将来将很难维护它,并且(2)S3根据文件上载/上传方式来计算ETag的方式有所不同。唯一可行的解​​决方案是从blobs表中删除NOT NULL约束,并覆盖Active Storage以在缺少校验和时不引发完整性异常。但是,我不确定这是否是一个好主意(在这种情况下,可维护性仍然很重要)。

0 个答案:

没有答案