2011-09-24 3 views
2

올바른 형식으로 파일 필드의 유효성을 검사하려면 어떻게해야합니까?파일 형식의 유효성을 검사하는 방법을 레일스?

이미지 필드가 .png, .jpg, .jpeg임을 확인하도록합니다.

그리고 그것은 끝 .FLV

이있는 FLV 그리고 그것은 끝이 .mov

이 어떻게 퀵타임 내가 필드가 유효하지 않음을 알려 오류 메시지를 생성 할.

내 simple_form_for :

<%= f.input :name, :label => 'Navn', :required => true %><br /> 
<%= f.label :tekst %><br /> 
<%= f.text_area :text, :label => 'Text', :size => '12x12' %><br /> 
<%= f.label "Upload billede - kræves" %><br /> 
<%= f.input :image, :label => '', :required => true %><br /> 
<%= f.label "Upload flv - kræves" %><br /> 
<%= f.input :flv, :label => '', :required => true %><br /> 
<%= f.label "Upload Quicktime - kræves" %><br /> 
<%= f.input :quicktime, :label => '', :required => true %><br /> 
<%= f.button :submit, :value => 'Create movie' %> 

업데이트 :

validates_format_of :flv, 
:with => %r{\.flv$}i, :message => "file must be in .flv format" 

validates_format_of :mov, 
:with => %r{\.mov$}i, :message => "file must be in .mov format" 

난 그냥이하지는 : 나는 .MOV 및 .flv의 필드의 유효성을 검사하는 방법을 알아낼 수있다

이미지의 유효성을 검사하는 솔루션을 찾았습니다.

내 컨트롤러 : 당신이 FLV 및 MOV와 마찬가지로 계속하려면

def savenew 
    @photographer = Photographer.new(params[:photographer]) 
    @photographer.sort_order = Photographer.count + 1 

    if @photographer.save 
     redirect_to :action => 'list', :id => params[:id] 
     flash[:notice] = "Movie #{@photographer.name} is created" 
    else  
     render 'create', :id => params[:id]    
    end         
end   
+0

레일을 모르므로 댓글로 남겨 둡니다.이 링크는 http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/38613644108f447a?fwc=1과 관련이 있습니다. –

+2

또한 파일 * 확장자 *에 대한 내용을 제거하는 것이 좋습니다. 형식 확인은 광고 확장의 유효성 검사와 매우 다릅니다. –

답변

9

, 당신은 할 수 :

validates_format_of :image, :with => %r{\.(png|jpg|jpeg)$}i, :message => "whatever" 

하지만이이 파일 이름 만 있음을 확인 것이라는 점을 유의하시기 바랍니다 특정 문자열로 끝납니다. 이것들은 실제 파일이 실제 PNG (또는 어떤 형식이든)임을 검증하지 않습니다. 따라서 누군가 여전히 확장자가 ".png"인 zip 파일을 업로드 할 수 있습니다.

+0

.mov와 .flv가 모두 유효하고 이미지가 유효하지 않은 경우 양식을 다시 렌더링하지만 모든 오류 메시지가 표시됩니다. 이미지 대신 오류 메시지 만 표시됩니다. 내 질문에 내 컨트롤러를 게시했습니다. 그리고 파일 필드가 항상 지워지는 이유는 무엇입니까? 유효하지 않은 경우. –

관련 문제