-1

私は Ruby on Rails を使用しており、画像を cassandra データベースに直接保存したいと考えています。

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

4

1 に答える 1

1

まず、列ファミリー バリデーターが BytesType であることを確認します。次に、次のように img を Cassandra に挿入できます。

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]

send_dataレールからこれを提供するには、 with を使用して img をストリーミングするアクションを持つコントローラーを作成する必要がありますdisposition => 'inline'

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 を使用してそのコントローラーにリンクできます。コントローラーからの画像のストリーミングの詳細については、この質問をご覧ください。

于 2012-01-29T22:05:45.483 に答える