【发布时间】:2010-11-27 23:09:09
【问题描述】:
所以,我设法在我的 MySQL 数据库中获取了一个图像 blob(该字段中有一个很大的十六进制数字),但我找不到任何关于如何在 rails 环境中显示图像的文档......当它打印出来,它以 GIF89... 开头,然后是您在记事本中打开 GIF 时看到的 gobbledygook 字符。 :P 任何线索将不胜感激!
谢谢。
【问题讨论】:
标签: mysql ruby-on-rails image
所以,我设法在我的 MySQL 数据库中获取了一个图像 blob(该字段中有一个很大的十六进制数字),但我找不到任何关于如何在 rails 环境中显示图像的文档......当它打印出来,它以 GIF89... 开头,然后是您在记事本中打开 GIF 时看到的 gobbledygook 字符。 :P 任何线索将不胜感激!
谢谢。
【问题讨论】:
标签: mysql ruby-on-rails image
以下代码应该可以工作。在您的控制器中,创建一个方法:
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) %>
我会推荐使用 Paperclip gem。它使图像的保存/查看变得非常容易。
【讨论】:
因为你提到了“又快又脏”,我就把它扔掉了——
<%= ('<img src="data:image/jpg;base64,%s">' % Base64.encode64(@the_data)).html_safe %>
我认为这与您想要做的最接近。这段代码不应该按原样使用有几个原因,但它很简单。我不得不更多地考虑将整个事物标记为 html_safe 的想法有多糟糕。此外,这不适用于旧版本的 IE。
【讨论】:
%s">' % Base64.encode64(@....部分是什么意思??? (百分比后跟 s 后跟百分比)
你也应该添加
resources :users do
get 'show_image', :on => :collection
end
或
get users/show_image" => "users#show_image"
之前
resources :users 在 route.rb 文件中
【讨论】: