【问题标题】:Rails: displaying an image from a blob field in a databaseRails:显示数据库中 blob 字段中的图像
【发布时间】:2010-11-27 23:09:09
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: mysql ruby-on-rails image


    【解决方案1】:

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

    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。它使图像的保存/查看变得非常容易。

    【讨论】:

    • 谢谢,这行得通。回形针可能是我最终会采用的方式,但我需要一个快速而肮脏的解决方案来进行演示。
    • @wulftone。很高兴能提供帮助。
    【解决方案2】:

    因为你提到了“又快又脏”,我就把它扔掉了——

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

    我认为这与您想要做的最接近。这段代码不应该按原样使用有几个原因,但它很简单。我不得不更多地考虑将整个事物标记为 html_safe 的想法有多糟糕。此外,这不适用于旧版本的 IE。

    【讨论】:

    • 我刚刚将它提取到一个助手中:)
    • 我也想知道%s"&gt;' % Base64.encode64(@....部分是什么意思??? (百分比后跟 s 后跟百分比)
    【解决方案3】:

    你也应该添加

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

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

    之前

    resources :usersroute.rb 文件中

    【讨论】:

    • @silvio Rails 4 会抱怨:ActionView::Template::Error (没有路由匹配 {:controller=>"user_controller", :action=>"show_image", :id=>9777}) :
    • 谢谢,这对于 Rails 4 来说绝对是必须的
    猜你喜欢
    • 2018-11-26
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 2012-04-21
    • 2013-01-23
    • 2012-02-03
    • 1970-01-01
    相关资源
    最近更新 更多