ruby-on-rails - 将现有文件迁移到 Active Storage 时如何计算校验和
问题描述
我正在将 Carrierwave 迁移到 Rails 5.2.3 应用程序中的 Active Storage,并将 S3 作为文件系统。问题是我的一些文件非常大(视频文件),我不能简单地下载它们来计算校验和。
对于小文件,我可能会使用ETag
(使用 API 获取)。但是,它不适用于更大的文件。根据文档:
如果一个对象是由 Multipart Upload 或 Part Copy 操作创建的,则无论加密方法如何,ETag 都不是 MD5 摘要。
有没有足够快的方法来获取文件的校验和?还是我需要修补ActiveStorage::Blob
'scompute_checksum_in_chunks
方法和所有相关代码(如 JavaScript lib 等)?
我想避免覆盖 Active Storage 代码,因为(1)将来很难维护,(2)S3 根据文件上传/上传的方式不同地计算 ETag。唯一可行的解决方案是NOT NULL
从 blobs 表中删除约束并覆盖 Active Storage 以在缺少校验和时不引发完整性异常。但是,我不确定这是否是一个好主意(在这种情况下,可维护性仍然相关)。
解决方案
推荐阅读
- c++builder - Embarcadero C++Builder 10.4 会有社区版吗?
- react-native - 所有 react-native-paper 组件都会抛出关于 Accessibility API 的类型错误
- python - 在 django 模型中,外键没有检索实际值
- flutter - 如何使用dio在flutter中成功响应时导航到不同的屏幕
- java - 将 springboot 升级到 2.4.2 版本后,@ActiveProfiles 注释不起作用
- linux - 如何从提交对象 git ls-tree?
- jakarta-mail - Jakarta Mail OAUTH 通过 POP 协议支持 Office365
- database - Docker撰写将SQL复制到卷但不导入数据库
- swift - 在 SwiftUI 中突出显示语音
- google-cloud-platform - google cloud run service运行时访问service account ID