我使用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模型ResourceDocument
有has_attached_file :target
。 document.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文件"
答案 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