0

我正在使用Carrierwave将文件上传到我的应用程序。我还使用Foggem 将我的文件存储在 上S3,最重要的是,我正在CloudFront为我的存储桶中的所有内容创建一个分布。

我有几个问题...

  1. 我需要创建“文件下载”,所以我需要编辑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  
  1. 据我了解,我不能同时拥有私有和公共的 CF 分发。我可以将我的下载链接全部设为私有,但我网站上的图片也托管在这里......这意味着我网站上的每张图片都需要一个经过身份验证的 URL。我想这不会那么糟糕,除非以后我想缓存,这将是一个问题。所以,我想我最好的选择是为公开的图像制作一个新的存储桶?
4

1 回答 1

1

我想也许我在上面回答了,但为了回答而不是评论:

  1. 我认为您应该能够通过在您的carrierwave 配置中设置fog_authenticated_url_expiration 来修改到期时间。
  2. 是的,如果你想要单独的公共文件,你应该有一个单独的存储桶和可能的分发。
  3. 你从这个 authenticated_url 中得到了什么?听起来这不是您所期望的,但知道它是什么应该会有所帮助。

谢谢。

于 2013-10-28T14:45:28.080 回答