シンプルなんだけど、調べると意外に出てこなかったのでメモ。
Rails でファイル(PDFなど)を強制的にダウンロードさせる方法
send_file path_to_file, type: 'application/force-download'
これでできた🙆♀️
説明
- Rails からファイル送出するには、基本
send_file
を使う この時レスポンスヘッダの
Content-Type
には、
ファイルに応じた Mime タイプ(application/pdf
等)が自動的にセットされる
これではブラウザによって挙動が変わってしまう・・・(ダウンロードされたり、ブラウザで直接開いたり)
強制ダウンロードさせるため、
Content-Type
にapplication/force-download
をセットしたいsend_file
のオプションとしてtype
が渡せるから、そこに書いてみよう!
→application/force-download
になった!
send_file では Content-Type 触れないのかと思って無駄に調べまくってしまった・・・
まずはドキュメントを読もう😌
send_file
https://apidock.com/rails/v6.0.0/ActionController/DataStreaming/send_file