我必须将资源(图像)从 Rails ActiveStorage 上传的文件迁移到 S3 到我的另一个 WordPress 网站。
但是,文件名似乎是它们的 Blob 键,如下所示:
5jEWBoezkaNyJtQA1icpnuSs
有没有办法从上面的键名中检索实际的文件名,例如“docker-life-cycle”?
注意:有人在这个问题中提到了一种方法(请参阅评论)使用 Amazon S3 的 Active Storage 未使用指定的文件名保存,而是使用文件密钥来保存
如果您有类似以下情况:
class Asset
has_one_attached :image
end
然后您就可以访问资产图像的文件名,如下所示:
asset = Asset.last
asset.image.filename # returns an ActiveStorage::Filename object
asset.image.filename.to_s # i.e. image.png etc
请记住,如果资产没有图像集,则
filename
将返回 nil,并且 filename.to_s
将返回 ""
,因此您需要相应地进行处理。
如果您的意思是您只有 blob 键并希望从那里查找文件名,那么它会是这样的:
blob = ActiveStorage::Blob.find_by(key: 'my_key')
blob.filename # returns an ActiveStorage::Filename object
blob.filename.to_s # again, filename as a string, i.e. image.png