2010-11-27 72 views
7

所以,我设法将图像blob插入到我的MySQL数据库中(字段中有一个很大的十六进制数字),但是我找不到任何有关如何在轨道环境中显示图像......当它打印出来时,它从一个GIF89开始......然后当您在记事本中打开它时,您在GIF中看到的gobbledygook字符。 :P任何线索将不胜感激!Rails:从数据库中的blob字段显示图像

谢谢。

回答

20

下面的代码应该可以工作。在你的控制器中,创建一个方法:

 

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

在你看来:

 

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

我会建议使用回形针宝石。它使保存/查看图像变得非常简单。

+0

谢谢,这是有效的。回形针可能是我最终走的路,但我需要一个快速而肮脏的解决方案来演示。 – wulftone 2010-12-05 19:57:27

+0

@wulftone。很高兴能帮上忙。 – Raunak 2010-12-05 20:41:38

5

您还应该添加

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

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

resources :usersroute.rb文件

10

因为你提到的 “快速和肮脏的”,我我会抛弃这个作为替代方案 -

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

我认为这是最接近你想要做的。这个代码不应该原样使用,有一些原因,但很简单。我不得不多想一个想法是多么糟糕,就是把整个事情标记为html_safe。另外,这在IE的旧版本中不起作用。