开发者

Rails: displaying an image from a blob field in a database

开发者 https://www.devze.com 2023-01-27 01:09 出处:网络
So, I managed to get an image blob into my MySQL database (there\'s a big hex number in the field), but I can\'t find any documentation on how to display the image in a rails environment... when it pr

So, I managed to get an image blob into my MySQL database (there's a big hex number in the field), but I can't find any documentation on how to display the image in a rails environment... when it prints out, it starts with a GIF89... and then the gobbledygook characters you see in a GIF when you open it in Notepad. : P Any clues would be greatly 开发者_Python百科appreciated!

Thanks.


The following code should work. In your controller, create a method:


def show_image
    @user = User.find(params[:id])
    send_data @user.image, :type => 'image/png',:disposition => 'inline'
end

In your view:


<%= image_tag url_for(:controller => "mycontroller", :action => "show_image", :id => @user.id) %>

I would recommend using the Paperclip gem. It makes saving/viewing of images really easy.


Because you mentioned "quick and dirty", I'll throw out this as an alternative-

<%= ('<img src="data:image/jpg;base64,%s">' % Base64.encode64(@the_data)).html_safe %>

I think this is closest to what you wanted to do. There's a few reasons that this code shouldn't be used as-is, but it's simple. I'd have to think more about how bad of an idea is it is to mark the whole thing as html_safe. Also, this wouldn't work in older versions of IE.


You should also add

resources :users do
     get 'show_image', :on => :collection
 end

or

get users/show_image" => "users#show_image"

before

resources :users in route.rb file

0

精彩评论

暂无评论...
验证码 换一张
取 消