初心者質問:レールからコントローラにファイルを返すにはどうすればよいですか?レールからファイルを返す
私はJSONオブジェクトの返却/レンダリングに精通しています。しかし、私は返された/任意の拡張子を持つファイルをレンダリングしたことはありません。
そんなことを読んでいるので、render :nothing => true
のように聞こえるかもしれません。私はいくつかのガイダンスや関連する文書を探しています。
初心者質問:レールからコントローラにファイルを返すにはどうすればよいですか?レールからファイルを返す
私はJSONオブジェクトの返却/レンダリングに精通しています。しかし、私は返された/任意の拡張子を持つファイルをレンダリングしたことはありません。
そんなことを読んでいるので、render :nothing => true
のように聞こえるかもしれません。私はいくつかのガイダンスや関連する文書を探しています。
組み込みレールsend_fileまたはsend_dataメソッドを使用できます。 (ファイルプロキシエンドポイント用など)のファイルをストリームに
、send_file使用:
send_file("#{RAILS_ROOT}/path/to/file/on/server",
:filename => "client-suggested-filename",
:type => "mime/type")
を(生成されたPDFのために例えば)生成されたデータをストリーミングするには、SEND_DATAを使用します。
send_data(your_data,
:filename => "client-suggested-filename",
:type => "mime/type")
ファイル拡張子とMIMEタイプは一致する必要はありませんが、おそらくエンドユーザーの期待に合致するはずです。たとえば、MIMEタイプがapplication/pdf
の場合は、実際には:filename
をsomething.pdf
に設定する必要があります。
送信するファイルのMIMEタイプがわからない場合は、this wikipedia pageをチェックするか、mime-types gemを使用してください。 (または、あなたがMIMEタイプを格納しているデータベースから読んでいるなら、それを使用してください)。
「send_data」がうまく聞こえます。ありがとう! – SundayMonday
可能な複製:http://stackoverflow.com/questions/1213957/exposing-files-from-a-service-through-a-rails-application – Baldrick