開発中のRailsアプリで、PUTで送信された画像を保存して、その画像データのバイナリを返す機能の実装が必要でした。
ほぼほぼ下の参考記事を組み合わせただけですが、備忘録として書いておきます。
結論
- 画像データは
ActionDispatch::Http::UploadedFile
のオブジェクトとしてstrongパラメータに渡される - バイナリを返すので、
send_data
を使って返せばよい -
send_data
の引数として、ActionDispatch::Http::UploadedFile
オブジェクトの値を渡してあげる
ソースコード(例外処理とか無し。upload_image_params
がstrongパラメータ)
def update_image
... # 保存する
send_data upload_image_params[:image].read,
type: upload_image_params[:image].content_type,
disposition: 'inline', stats: :ok
end
参考
Rails でファイルをアップロードしてDBに登録する
ActionDispatch::Http::UploadedFileを読む (デバッグメモ)
Railsドキュメント - send_data