Sinatra 画像

Sinatraで画像ファイルやcssファイル等、静的ファイルはpublicフォルダに入れてる。そのファイルを指定するときは、public/hoge.png、ではなく /hoge.png で指定できる。

上策:Rackに任せる
http://blog.s21g.com/articles/1565


Sinatra で画像をダイナミックに出力する(DB などに保存していたバイナリデータを直接出力する)

get '/images/:id' do |id|
# レコード取得
@item = Item.where(:id => id).first

if @item and @item.image
# content_type をセット(image/jpeg など)
content_type @item.image.content_type
# 画像を出力
@item.image.body
else
# 404
not_found
end
end

http://localhost:4567/images/3
などとアクセスすると画像が出力されます。

画像を保存させたいのであれば、画像を出力する前に、Content-Disposition ヘッダをセットしてあげます。

response["Content-Disposition"] = "attachment"

Sinatraで画像のCRUD
http://aoyagikouhei.blog8.fc2.com/blog-entry-188.html


Gyazo の upload.cgi を Sinatra で実装したりした(Heroku にデプロイもできるよ!)
http://blog.udzura.jp/2011/06/23/gyazo-upload-cgi-with-sinatra/

https://gist.github.com/1088643

sinatra での SubURI アクセスで、静的コンテンツにリンクする方法
http://d.hatena.ne.jp/seiunsky/20090728/1248805790


Writing an RSS feed using Sinatra and Haml
http://blog.gun8.com/