【问题标题】:Paperclip validates_attachment_content_type for mp3 triggered when attaching mp3附加 mp3 时触发 mp3 的回形针 validates_attachment_content_type
【发布时间】:2010-12-17 14:47:27
【问题描述】:

当我使用回形针将以下验证添加到我的语音模型时,努力锻炼,当我尝试上传 mp3 时它被触发:

class Voice < ActiveRecord::Base
  has_attached_file :clip

  validates_attachment_presence :clip
  validates_attachment_content_type :clip, :content_type => [ 'application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3' ],
                                    :message => 'file must be of filetype .mp3'

  validates_attachment_size :clip, :less_than => 10.megabytes                                    

  validates_presence_of :title      
end

我尝试了许多不同的 mp3 文件,但似乎都没有上传,因为验证失败。

【问题讨论】:

    标签: ruby-on-rails validation mp3 paperclip


    【解决方案1】:

    只是愚蠢,对不起。

    我只是删除了验证,在数据库中查看了 content_type 被保存为的内容 ('audio/mpg'),并将其添加到验证中允许的 content_types 数组中。

    工作完成:-)

    【讨论】:

    • 你好。我正在尝试音频/wav 类型。但它不起作用。请你帮助我好吗?谢谢:)
    【解决方案2】:

    错误的内容类型?试试音频/mpeg。

    http://www.w3schools.com/media/media_mimeref.asp

    【讨论】:

    • 我最初允许的内容类型数组是:['application/mp3', 'application/x-mp3', 'audio/mpeg', 'audio/mp3'],然而,保存到数据库的内容类型是“音频/mpg”,我认为这很奇怪。那么我的 mp3 是否有一些不可靠的地方或其他一些奇怪的地方?这看起来确实很奇怪。
    【解决方案3】:

    是的,但是如果用户有其他浏览器(或其他版本的浏览器),mp3 的内容类型可能会以意想不到的方式被解释,他将无法保存 mp3。

    【讨论】:

    • 我同意,我认为这将是建立一个内容类型数组的情况,这些内容类型对于 mp3 来说都是有效的,以涵盖所有基础。
    【解决方案4】:

    为了(希望)完整的 mp3 支持,我使用了以下 mimetypes:

    validates_attachment_content_type :audio,
      :content_type => [ 'audio/mpeg', 'audio/x-mpeg', 'audio/mp3', 'audio/x-mp3', 'audio/mpeg3', 'audio/x-mpeg3', 'audio/mpg', 'audio/x-mpg', 'audio/x-mpegaudio' ]
    

    【讨论】:

      【解决方案5】:

      所以,奇怪的是,我今晚遇到了这个问题,上述解决方案都没有为我工作。我收到了这个错误:

      `[paperclip] Content Type Spoof: Filename blah_blah_blah.mp3 (audio/mp3 from Headers, ["audio/mpeg"] from Extension), content type discovered from file command: application/octet-stream. See documentation to allow this combination.`
      

      我用这个作为验证器解决了这个问题:

      validates_attachment_content_type :recording,
      content_type: [
        'application/mp3',
        'application/x-mp3',
        'audio/mpeg',
        ['audio/mpeg'], # note the array around the type
        'audio/mp3'
      ],
      message: 'File must be of filetype .mp3'
      

      希望这对某人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-23
        • 1970-01-01
        相关资源
        最近更新 更多