加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Paperclip的content_type根据应用程序无效,但

发布时间:2020-12-17 03:40:45 所属栏目:百科 来源:网络整理
导读:我是Paperclip的新手,这一切看起来都很快.我试图让用户只上传PNG或JPG,虽然我上传了一个JPG,我的content_type验证了JPG但它仍然无效. 我已经尝试删除PNG content_type,但无济于事. 我也尝试过使用has_attached_file,但似乎忽略了:content_type和stuff.因为
我是Paperclip的新手,这一切看起来都很快.我试图让用户只上传PNG或JPG,虽然我上传了一个JPG,我的content_type验证了JPG但它仍然无效.

我已经尝试删除PNG content_type,但无济于事.

我也尝试过使用has_attached_file,但似乎忽略了:content_type和stuff.因为如果我上传了一个JPG:content_type =>只有“image / png”;它没有
给出错误.

有什么建议?

validates_attachment :avatar,:styles => { 
                                    :medium => "300x300",:thumb => "100x100" 
                                },:content_type => { 
                                    :content_type => "image/jpg",:content_type => "image/png"
                                },:size => { :in => 0..1.megabytes }

哦,当我在它的时候;我想让我的拇指和中等到固定的宽度.所以没有缩放像100×80,但只有100×100.我怎样才能做到这一点?

解决方法

您似乎正在尝试使用一些Paperclip验证,您可以在此处查看: Paperclip – Validate File Type but not Presence

根据那个答案,你可以使用这个:

validates_attachment_content_type :sound,:content_type => ['audio/mp3','application/x-mp3'],:if => :sound_attached?

另一种方法是使用lambda来检查您是否正在处理特定的内容类型.以下是我们的一个实时应用程序的示例:

has_attached_file :attachment,styles:          lambda { |a| a.instance.is_image? ? {:small => "x200>",:medium => "x300>",:large => "x400>"}  : {:thumb => { :geometry => "100x100#",:format => 'jpg',:time => 10},:medium => { :geometry => "300x300#",:time => 10}}}

    def is_image?
            attachment.instance.attachment_content_type =~ %r(image)
    end

Lambda只是衡量内容类型是否符合您需要的一种方式(I.E您只允许JPG图像).为了验证图像(而不是视频)的存在,您需要validates_attachment_content_type

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读