我正在使用Carrierwave
将文件上传到我的应用程序。我还使用Fog
gem 将我的文件存储在 上S3
,最重要的是,我正在CloudFront
为我的存储桶中的所有内容创建一个分布。
我有几个问题...
- 我需要创建“文件下载”,所以我需要编辑
response-content-disposition
. 似乎(查看示例),这已经可以用 Fog 或 Carrierwave 完成......但是当我尝试url(20, :query => { "response-content-disposition" => "xyz" })
像文档中所说的那样传入时(20 是过期时间),它声明它只需要一个参数。所以我的问题是,如何设置 URL 的过期时间?
在我在那里找不到任何东西之后,我尝试authenticated_url
了它也只需要 1 个参数,并将过期时间设置为 10 分钟。我确定我可以在配置中全局设置它,但我不知道为什么我不能在每个链接的基础上设置它?
这是我到目前为止的代码:
def download_link(download)
file = download.filename.file
filename = file.filename
extension = file.extension
options = {
:query => {
"response-content-type" => download_content_type(extension),
"response-content-disposition" => "attachment; filename=#{filename}"
}
}
file.authenticated_url(options)
end
- 据我了解,我不能同时拥有私有和公共的 CF 分发。我可以将我的下载链接全部设为私有,但我网站上的图片也托管在这里......这意味着我网站上的每张图片都需要一个经过身份验证的 URL。我想这不会那么糟糕,除非以后我想缓存,这将是一个问题。所以,我想我最好的选择是为公开的图像制作一个新的存储桶?