gpt4 book ai didi

ruby-on-rails - 带有 Amazon S3 的 Active Storage 不使用指定的文件名保存,而是使用文件 key 保存

转载 作者:行者123 更新时间:2023-12-04 23:13:08 31 4
gpt4 key购买 nike

我在使用 Active Storage 时遇到问题。当我上传到 Amazon S3 时,而不是使用原始名称将文件保存在存储桶中,例如 myfile.zip它将它保存为 key与该文件相关联。所以在 Cyber​​duck 中我看到了这样的东西:5YE1aJQuFYyWNr6BSHxhQ48t .没有任何文件扩展名。

我不确定 Rails 5 中是否有一些设置,或者它是否在 Amazon S3 中,但我花了几个小时在谷歌上搜索以找出发生这种情况的原因。

任何指针将不胜感激!

此致,
安德鲁

最佳答案

这是设计使然,来自 ActiveStorage。该文件在 S3 上按其 key 存储且没有扩展名,但是当 URL 由 ActiveStorage 生成时,disposition and filename are set .

def url(key, expires_in:, filename:, disposition:, content_type:)
instrument :url, key: key do |payload|
generated_url = object_for(key).presigned_url :get, expires_in: expires_in.to_i,
response_content_disposition: content_disposition_with(type: disposition, filename: filename),
response_content_type: content_type

payload[:url] = generated_url

generated_url
end

结尾

这样做可能是为了避免您会遇到的文件名转义问题。

您可以阅读有关 Content-Disposition 的更多信息标题 here .

关于ruby-on-rails - 带有 Amazon S3 的 Active Storage 不使用指定的文件名保存,而是使用文件 key 保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50640231/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com