2012-01-29 22 views
-1

私はRuby on Railsを使用しています。私は直接画像をcassandraデータベースに保存したいと思います。cassandra cqlでバイナリデータを保存する方法

cassandra-cql gemを含むファイルをcassandraデータベースに保存するにはどうすればよいですか? そして、このファイルをimage_tagに表示するにはどうしたらいいですか?

答えて

1

まず、列ファミリのバリデータがBytesTypeであることを確認します。そして、あなたはそうのようなカサンドラにあなたのimgを挿入することもできます

File.open('/tmp/image.jpg', 'r') do |f| 
    img = f.read.force_encoding('ASCII-8BIT') # ensure cassandra-cql knows this is binary 
    handle.execute("insert into img (KEY, colA) values ('rowA', ?)", img); 
end 

をバックアウトそれを取得するには:

img = handle.execute("select colA from img where KEY = 'rowA'").fetch[0] 

あなたはIMGをストリーミングするアクションとコントローラを行う必要がありますレールからこのサービスを提供するにはdisposition => 'inline'send_dataを使用して:

class ImgController < ApplicationController 
    def img 
    row_key = params['row_key'] 
    col_name = params['col_name'] 
    img = handle.execute("select ? from img where KEY = ?", col_name, row_key).fetch[0] 
    send_data(img, :filename => 'img.jpg', :type => 'image/jpeg', :disposition => 'inline') 
    end 
end 

その後、あなたはそのコントローラにリンクするIMAGE_TAGを使用することができます。 this question for more info on streaming images from a controllerを見てください。

関連する問題