Carrierwave
ファイルをアプリにアップロードするために使用しています。また、gem を使用しFog
てファイルを に保存しています。さらに、バケット内のすべてS3
のディストリビューションを作成しています。CloudFront
いくつか質問があります...
- 「ファイルのダウンロード」を作成する必要があるため、編集する必要があります
response-content-disposition
。(例を見ると)、これは既に Fog または Carrierwave で実行できます...しかしurl(20, :query => { "response-content-disposition" => "xyz" })
、ドキュメントにあるように渡そうとすると (20 は有効期限です)、引数は 1 つしか期待できないと表示されます。私の質問は、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
- 私は、プライベートとパブリックの両方の CF ディストリビューションを持つことができないことを理解しています。ダウンロード リンクをすべて非公開にしても問題ありませんが、サイトの画像もここでホストされています。つまり、サイトのすべての画像には認証済みの URL が必要です。後でキャッシュしたい場合を除いて、それはそれほど悪くはないと思いますが、これは問題になるでしょう。だから、ここで私の最善の策は、公開されている画像のためだけに新しいバケットを作成することだと思いますか?