如何验证文件字段的格式是否正确?
我希望图片字段验证它是.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' %>
更新
我已经弄清楚如何验证.mov和.flv字段:
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"
我还没有找到验证图像的解决方案。
我的控制器:
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 :(得分:10)
如果你想继续使用flv和mov,你可以这样做:
validates_format_of :image, :with => %r{\.(png|jpg|jpeg)$}i, :message => "whatever"
但是请注意,这只会验证文件名是否以特定字符串结尾。这些不验证实际文件是真正的PNG(或任何格式)。所以有人仍然可以上传一个扩展名为“.png”的zip文件。