Amazon s3 如何为S3上托管的文件设置带有回形针/雾的内容处置标头?

Amazon s3 如何为S3上托管的文件设置带有回形针/雾的内容处置标头?,amazon-s3,paperclip,fog,Amazon S3,Paperclip,Fog,我使用的是回形针4.2.0和FOG1.24.0,以及S3上的主机文件。我想生成一个将“内容处置”标题设置为“附件”的过期URL 回形针必须将其他参数传递给S3过期URL,但在将回形针与回形针::Storage::Fog一起使用时,我无法让它工作 这提供了以下解决方案: file.url(60.seconds.from_now,{:query=>{'response content disposition'=>'attachment'}} 但是它对我不起作用。我的Rails模型ResourceDo

我使用的是回形针4.2.0和FOG1.24.0,以及S3上的主机文件。我想生成一个将“内容处置”标题设置为“附件”的过期URL

回形针必须将其他参数传递给S3过期URL,但在将回形针与
回形针::Storage::Fog
一起使用时,我无法让它工作

这提供了以下解决方案:

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


但是它对我不起作用。我的Rails模型
ResourceDocument
已经附加了文件:target
document.target.url(60.seconds.from_now,{:query=>{'response content disposition'=>'attachment'}}
返回的url与
document.target.url(60.seconds.from_now)相同
,即生成的URL中不包含任何内容处理:“xxx.s3.amazonaws.com/uploads/resource\u documents/targets/40/2014-12-01%2017:26:20%20UTC/my\u file.csv”

我正在使用aws sdk gems,它对我很好,希望这对您有所帮助

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

谢谢Xing,您的解决方案对我很有效,我只是使用了文件路径而不是文件名(
object\u name=target.path
),并添加了选项
response\u content\u type:MIME::Types.of(target\u file\u name)。首先
中的
url\u for
中,否则Safari会在下载的文件名后面添加
.txt