Rails: отображение изображения из поля BLOB-объекта в базе данных - PullRequest
8 голосов
/ 28 ноября 2010

Итак, мне удалось получить блоб изображения в мою базу данных MySQL (в поле есть большое шестнадцатеричное число), но я не могу найти никакой документации о том, как отобразить изображение в среде рельсов ... когда этоРаспечатывается, он начинается с GIF89 ... и затем символов гоблидов, которые вы видите в GIF, когда вы открываете его в Блокноте.: P Любые подсказки будут с благодарностью!

Спасибо.

Ответы [ 3 ]

22 голосов
/ 28 ноября 2010

Следующий код должен работать. В вашем контроллере создайте метод:


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) %>

Я бы порекомендовал использовать драгоценный камень. Это делает сохранение / просмотр изображений действительно легким.

12 голосов
/ 06 декабря 2012

Поскольку вы упомянули «быстро и грязно», я выброшу это как альтернативу -

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

Я думаю, это наиболее близко к тому, что вы хотели сделать.Есть несколько причин, по которым этот код не следует использовать как есть, но он прост.Мне нужно больше думать о том, насколько плоха идея помечать все как html_safe.Кроме того, это не будет работать в старых версиях IE.

5 голосов
/ 18 июня 2012

Вы также должны добавить

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

или

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

до

resources :users в route.rb file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...