2014-12-01 26 views
2

我使用Paperclip 4.2.0和霧1.24.0和S3上的主機文件。我想要生成一個將「Content-Disposition」標題設置爲「attachment」的到期URL。如何使用Paperclip/fog爲S3上託管的文件設置Content Disposition標頭?

回形針有this option傳遞額外的參數到S3到期URL,但我不能讓它與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「

回答

3

我正在使用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 
+0

感謝星,您的解決方案爲我工作,我只是用文件路徑,而不是文件名('OBJECT_NAME = target.path'),並添加了一些選項'url_for'中的'response_content_type:MIME :: Types.of(target_file_name).first',否則Safari會將'.txt'附加到下載的文件名中。 – Florent2 2014-12-01 20:37:09

相關問題