8

当我使用回形针将以下验证添加到我的语音模型时,努力锻炼,当我尝试上传 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 文件,但似乎都没有上传,因为验证失败。

4

5 回答 5

5

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

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

于 2009-11-17T20:35:16.857 回答
4

只是愚蠢,对不起。

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

任务完成 :-)

于 2009-11-17T20:30:59.583 回答
3

对于(希望)完整的 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' ]
于 2011-10-25T13:53:12.627 回答
1

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

于 2010-05-07T13:45:35.977 回答
0

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

`[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'

希望这可以帮助某人。

于 2016-04-28T07:02:46.073 回答