从 Rails ActiveStorage S3 文件名中检索实际文件名

问题描述 投票:0回答:1

我必须将资源(图像)从 Rails ActiveStorage 上传的文件迁移到 S3 到我的另一个 WordPress 网站。

但是,文件名似乎是它们的 Blob 键,如下所示:

5jEWBoezkaNyJtQA1icpnuSs

有没有办法从上面的键名中检索实际的文件名,例如“docker-life-cycle”?

注意:有人在这个问题中提到了一种方法(请参阅评论)使用 Amazon S3 的 Active Storage 未使用指定的文件名保存,而是使用文件密钥来保存

ruby-on-rails ruby-on-rails-5 rails-activestorage
1个回答
0
投票

如果您有类似以下情况:

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
© www.soinside.com 2019 - 2024. All rights reserved.