ruby-on-rails - Rails 如何验证文件格式?

标签 ruby-on-rails ruby ruby-on-rails-3

如何验证文件字段的格式是否正确?

我希望图像字段验证它是 .png、.jpg、.jpeg。

还有以.flv结尾的flv

还有以 .mov 结尾的 quicktime

以及如何创建错误消息来告知该字段无效。

我的 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"

我只是没有找到验证图像的解决方案。

我的 Controller :

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         

最佳答案

如果你想继续使用 flv 和 mov,你可以这样做:

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

但是请注意,这只会验证文件名是否以特定字符串结尾。这些不验证实际文件是真正的 PNG(或任何格式)。所以有人仍然可以上传扩展名为“.png”的 zip 文件。

关于ruby-on-rails - Rails 如何验证文件格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7540601/

相关文章:

ruby - 从 String#split 返回的零长度字符串

ruby-on-rails - TimeZone 的参数无效?

ruby-on-rails - "RAILS_GEM_VERSION"设置的具体作用是什么?

asp.net - 决策者问题 : compare ASP. NET/Ruby/Python on web UI controls

ruby-on-rails - Capybara::ElementNotFound 的所有规范仅在 Travis 上

ruby-on-rails - FactoryGirl 制作不适用于功能测试

ruby-on-rails - rails :remote ajax always triggers failure

mysql - 如何获得与可排名数据模型关联的 TOP 10 标签? -- 高级 MySQL 或 ActiveRecord 查询问题

ruby-on-rails - 名称错误 : undefined local variable or method `app'

ruby-on-rails - Rails 中的 jQuery ajax 调用?