如何从Rails ActiveStorage的S3文件Key中获取真实文件名
问题:从Rails ActiveStorage的S3 Blob Key获取真实文件名
我需要将通过Rails ActiveStorage上传至S3的图片迁移到另一WordPress网站,但发现S3中的文件名是类似5jEWBoezkaNyJtQA1icpnuSs的Blob Key,请问能否从该Key中获取如"docker-life-cycle"这类真实文件名?
解决方法
- 可以获取真实文件名。ActiveStorage不会把原始文件名直接作为S3存储的Key,而是生成随机唯一的Blob Key,但文件的原始名称、元数据等信息会存在Rails应用的数据库中,和Blob Key一一关联。
- 具体操作步骤:
- 访问你的Rails应用数据库,找到
active_storage_blobs表——这是ActiveStorage存储所有上传文件元数据的核心表。 - 在表中通过
key字段匹配你拿到的Blob Key(比如5jEWBoezkaNyJtQA1icpnuSs),对应的filename字段就是你需要的真实文件名(例如"docker-life-cycle.png")。 - 如果需要批量处理所有文件,可以用SQL查询导出Blob Key与真实文件名的映射关系,示例查询语句:
SELECT key, filename FROM active_storage_blobs; - 拿到映射关系后,你可以批量修改S3上的文件名称,或者在迁移到WordPress时直接用真实文件名替换Blob Key。
- 访问你的Rails应用数据库,找到
注意:如果你的Rails应用数据库已经丢失,那无法从Blob Key直接反推出真实文件名——因为ActiveStorage的Blob Key是随机生成的唯一标识,本身不包含任何原始文件名的信息。
内容的提问来源于stack exchange,提问作者Dhanu Gurung
相关产品推荐
相关产品推荐

