Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 appreciated!

Thanks.

like image 306
wulftone Avatar asked Nov 27 '10 23:11

wulftone


2 Answers

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.

like image 69
Raunak Avatar answered Sep 22 '22 11:09

Raunak


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.

like image 31
Anna Avatar answered Sep 20 '22 11:09

Anna