我正在将S3作为文件系统的Carrierwave迁移到Rails 5.2.3应用程序中的Active Storage。问题是我的一些文件(视频文件)很大,我不能简单地下载它们来计算校验和。
对于小文件,我可能可以使用ETag
(fetched using the API)。但是,它不适用于较大的文件。根据{{3}}:
如果通过“分段上传”或“部分复制”操作创建了对象,则无论采用哪种加密方法,ETag都不是MD5摘要。
是否有足够快的方法来获取文件的校验和?还是我需要猴子修补the documentation方法和所有相关代码(例如JavaScript lib等)?
我想避免覆盖Active Storage代码,因为(1)将来将很难维护它,并且(2)S3根据文件上载/上传方式来计算ETag的方式有所不同。唯一可行的解决方案是从blobs表中删除NOT NULL
约束,并覆盖Active Storage以在缺少校验和时不引发完整性异常。但是,我不确定这是否是一个好主意(在这种情况下,可维护性仍然很重要)。