如何使用Paperclip / fog为S3上托管的文件设置Content Disposition标头?

时间:2014-12-01 17:29:13

标签: amazon-s3 paperclip fog

我使用Paperclip 4.2.0和雾1.24.0,以及S3上的主机文件。我想生成一个过期的URL,其中包含" Content-Disposition"标题设置为"附件"。

Paperclip有this option将其他参数传递给S3过期网址,但在将Paperclip与Paperclip::Storage::Fog一起使用时,我无法使用它。

fog issue提供了以下解决方案:

file.url(60.seconds.from_now, { :query => { 'response-content-disposition' => 'attachment' } }

但它对我不起作用。我的Rails模型ResourceDocumenthas_attached_file :targetdocument.target.url(60.seconds.from_now, { :query => { 'response-content-disposition' => 'attachment' } }返回的网址与document.target.url(60.seconds.from_now)相同,即生成的网址中不包含任何内容处置:" xxx.s3.amazonaws.com/uploads/resource_documents/targets/40/2014- 12-01%2017:26:20%20UTC / my_file.csv文件"

1 个答案:

答案 0 :(得分:1)

我正在使用aws-sdk宝石,它对我来说很好,希望这对你有帮助。

gem 'aws-sdk-core'
gem 'aws-sdk'

和模型的方法:

def download_url
  s3 = AWS::S3.new
  s3_videos_bucket = 'xxxx' #bucket name goes right here
  bucket = s3.buckets[s3_videos_bucket]
  object_path = 'xxxx' #file path goes right here
  object = bucket.objects[object_path]
  object.url_for(:get, { 
    expires: 60.minutes,
    response_content_disposition: 'attachment;'
  }).to_s
end