0

Carrierwaveファイルをアプリにアップロードするために使用しています。また、gem を使用しFogてファイルを に保存しています。さらに、バケット内のすべてS3のディストリビューションを作成しています。CloudFront

いくつか質問があります...

  1. 「ファイルのダウンロード」を作成する必要があるため、編集する必要があります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  
  1. 私は、プライベートとパブリックの両方の CF ディストリビューションを持つことができないことを理解しています。ダウンロード リンクをすべて非公開にしても問題ありませんが、サイトの画像もここでホストされています。つまり、サイトのすべての画像には認証済みの URL が必要です。後でキャッシュしたい場合を除いて、それはそれほど悪くはないと思いますが、これは問題になるでしょう。だから、ここで私の最善の策は、公開されている画像のためだけに新しいバケットを作成することだと思いますか?
4

1 に答える 1

1

たぶん私は上で答えたと思いますが、コメントではなく答えのために:

  1. Carrierwave の設定で fog_authenticated_url_expiration を設定することで、有効期限を変更できるはずです。
  2. はい、個別の公開ファイルが必要な場合は、個別のバケットと、場合によってはディストリビューションを用意する必要があります。
  3. この authenticated_url から何を取得していますか? それはあなたが期待するものではないように聞こえますが、それが何であるかを知ることは助けになるはずです.

ありがとう。

于 2013-10-28T14:45:28.080 に答える