2010-11-27 4 views
7

그래서, 이미지 데이터베이스를 내 MySQL 데이터베이스에 가져 왔지만 (필드에 큰 16 진수가 있음) 어떻게해야하는지에 대한 문서를 찾을 수 없습니다. 레일 환경에서 이미지를 표시합니다 ... 인쇄 할 때 GIF89 ...로 시작한 다음 메모장에서 열면 GIF에서 보이는 gobbledygook 문자로 시작합니다. : P 모든 단서는 크게 감사하겠습니다!레일 : 데이터베이스의 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

+0

@wulftone. 기꺼이 도움이 될 것입니다. – Raunak

5

또한 나는

resources :users

+1

그가 왜해야합니까? – silvio

+0

@silvio Rails 4는 다음과 같이 불만을 제기합니다 : ActionView :: Template :: Error (경로가 일치하지 않습니다 : 컨트롤러 :> "user_controller", : action => "show_image", : id => 9777}) : –

+0

감사합니다. Rails 4를위한 필수 아이템 – Tico

10

파일 route.rb당신이 "신속하고 더러운"언급하기 때문에

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

또는

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

전에 추가해야합니다 대안으로 던져 버릴거야.

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

나는 이것이 당신이하고 싶은 것에 가장 가깝다고 생각합니다. 이 코드를 그대로 사용해서는 안되는 몇 가지 이유가 있지만 간단합니다. 아이디어의 나쁜 점은 html_safe로 모든 것을 표시하는 것입니다. 또한 이것은 이전 버전의 IE에서는 작동하지 않습니다.

관련 문제