标签: paperclip-validation

Paperclip/Rspec测试:有没有更快的方法来测试paperclip validates_attachment_content_type?

我注意到的一件事是,在我做的大多数项目中,一个需要很长时间(30秒+)的规范就是这个应该/回形针助手:

it { should validate_attachment_content_type(:bannerimage)
  .allowing('image/png', 'image/jpeg', 'image/gif', 'image/jpg')
  .rejecting('text/plain')
}
Run Code Online (Sandbox Code Playgroud)

我非常想保留内容类型验证,但我想知道是否有更快的方法来实现它.我已经用以下标记标记了这些测试:慢速运行rspec而没有:慢速规范,但是,我希望有人能够更快地测试图像内容类型.

rspec ruby-on-rails shoulda paperclip paperclip-validation

11
推荐指数
1
解决办法
1341
查看次数

Rails中的回形针4 - 强参数禁止属性错误

在Rails 4中出现Paperclip上传问题 - ForbiddenAttributesError失败(强参数验证).拥有最新的回形针宝石和最新的rails 4宝石.

我有一个模型"图像",在模型中附加文件"上传":

has_attached_file :upload, :styles => { :review => ["1000x1200>", :png], :thumb => ["100x100>", :png]}, :default_url => "/images/:style/missing.png"
Run Code Online (Sandbox Code Playgroud)

图像模型是用脚手架创建的,我添加了回形针迁移.表单部分已更新为使用

f.file_field :upload
Run Code Online (Sandbox Code Playgroud)

表单生成一组典型的回形针参数,图像参数包含上传.我也在图像模型中传递了transaction_id,因此应该允许它.但就是这样 - 图像和交易ID.

我希望能够在我的控制器中编写以下内容以将我的帖子列入白名单 - 但它失败了:

def image_params
  params.require(:image).permit(:transaction_id, :upload)
end
Run Code Online (Sandbox Code Playgroud)

所以我更明确 - 但也失败了:

def image_params
  params.require(:image).permit(:transaction_id, :upload => [:tempfile, :original_filename, :content_type, :headers])
end
Run Code Online (Sandbox Code Playgroud)

我有点沮丧的是Rails 4没有告诉我ForbiddenAttributesError在开发环境中失败了 - 它应该显示错误但它没有 - 将是一个很好的补丁来简化开发.或者也许其他人都得到了我所缺少的东西!非常感谢你的帮助.

paperclip paperclip-validation strong-parameters ruby-on-rails-4

10
推荐指数
1
解决办法
8504
查看次数

验证Paperclip中的扩展 - Ruby on Rails

我发现Paperclip可以验证文件内容类型,即image/jpeg,但我想专门验证扩展名.这是因为我正在使用一个不起作用的扩展,它不会获得一致的内容类型.任何人都知道这是可行的,还是一个很好的方法来做到这一点?

ruby-on-rails paperclip paperclip-validation

9
推荐指数
1
解决办法
1万
查看次数

Paperclip-使用content_type ='application/octet-stream'验证pdfs

paperclip用于文件上传.验证如下:

validates_attachment_content_type :upload, :content_type=>['application/pdf'], :if => Proc.new { |module_file| !module_file.upload_file_name.blank? }, :message => "must be in '.pdf' format"

但是,我的客户今天抱怨他无法上传pdf.在调查之后,我从请求标题中了解到正在提交的文件content_type=application/octet-stream.

允许application/octet-stream允许上传多种类型的文件.

请提出解决方案来解决这个问题.

paperclip ruby-on-rails-3 paperclip-validation

9
推荐指数
2
解决办法
6393
查看次数

Rails回形针,编辑表单file_field未分配

我使用paperclip将头像附加到我的用户身上,在我的模型中:

has_attached_file :avatar, 
    :styles => {square_tiny: '50x50#', square_small: '100x100#', square: '200x200#'}
Run Code Online (Sandbox Code Playgroud)

我有一张表格

<%= form_for(@user_profile, 
        :url => { :controller => :user_profiles, :action => :update_general_info, :id => @user_profile.id }, 
            :html => {  :multipart => true, 
                :class=> "form-horizontal" }) do |f| %>

            <div class="control-group">
              <%= f.label :avatar, :class => "control-label" %>
                <div class="controls">
                    <%= f.file_field :avatar  %>
                </div>
            </div>

....

<% end %>
Run Code Online (Sandbox Code Playgroud)

上传工作完美,但我回来编辑我的用户,文件字段显示'没有选择文件'.由于我正在验证该头像的存在,每次用户编辑他的详细信息时,他都必须再次上传他的头像...

我该如何解决这个问题?

我认为这:multipart => true会有所帮助,但事实并非如此.

forms ruby-on-rails-3.1 paperclip-validation

8
推荐指数
1
解决办法
2515
查看次数

IE8中的回形针照片上传失败

我正在使用paperclip在我的应用中上传图片.验证我是:

 validates_attachment_content_type :image, :content_type => ['image/jpg','image/jpeg', 'image/png', 'image/tiff', 'image/gif']
Run Code Online (Sandbox Code Playgroud)

一切都适用于firefox,chorme和IE9.但在IE8中,我收到一个错误 - " 照片图像内容类型无效格式!!! "

任何解决方案或线索都非常感谢.

ruby-on-rails internet-explorer-8 paperclip-validation

7
推荐指数
1
解决办法
1515
查看次数

回形针图像尺寸自定义验证器

这是我的Image模型,其中我实现了一种验证附件尺寸的方法:

class Image < ActiveRecord::Base
  attr_accessible :file

  belongs_to :imageable, polymorphic: true

  has_attached_file :file,
                     styles: { thumb: '220x175#', thumb_big: '460x311#' }

  validates_attachment :file,
                        presence: true,
                        size: { in: 0..600.kilobytes },
                        content_type: { content_type: 'image/jpeg' }

  validate :file_dimensions

  private

  def file_dimensions(width = 680, height = 540)
    dimensions = Paperclip::Geometry.from_file(file.queued_for_write[:original].path)
    unless dimensions.width == width && dimensions.height == height
      errors.add :file, "Width must be #{width}px and height must be #{height}px"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这工作正常,但它不可重复使用,因为该方法采用宽度和高度的固定值.我想将其转换为自定义验证器,因此我也可以在其他模型中使用它.我已经阅读了有关此内容的指南,我知道在app/models/dimensions_validator.rb中它会是这样的:

class DimensionsValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    dimensions = …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails paperclip ruby-on-rails-3 paperclip-validation

7
推荐指数
1
解决办法
5616
查看次数

使用Paperclip和Rails验证多个内容类型

我正在使用Paperclip gem for Rails,以便用户上传他们自己的照片.我明明只希望接受jpeg,gifpng图像.验证这些文件的正确方法是什么,而不是像word文档那样上传?

根据Paperclip文档,我使用以下内容验证内容类型:

validates_attachment :document, content_type: "application/pdf"
Run Code Online (Sandbox Code Playgroud)

什么是验证上述不同的图像格式(有道gif,png,jpeg)?

ruby-on-rails paperclip ruby-on-rails-3 paperclip-validation ruby-on-rails-3.2

7
推荐指数
1
解决办法
5910
查看次数

如何使用 Rails 中的 Paperclip gem 上传 Outlook 文件(.msg 扩展名)

我需要能够将电子邮件附加到模型,特别是 .eml 和 .msg 文件

Paperclip 现在需要验证使用它上传的文件类型。

我的代码中这些验证所在的部分在这里:

validates_attachment_content_type :supporting_document,
:content_type => ['application/pdf', 'application/vnd.ms-excel',
                  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
                  'image/jpeg', 'image/jpg', 'image/png',
                  'application/vnd.ms-excel.sheet.macroEnabled.12', 'application/msword',
                  'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
                  'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',EML_MIMETYPE],
:message => 'incorrect file type.'
Run Code Online (Sandbox Code Playgroud)

最后一部分 EML_MIMETYPE 用于 .eml 文件,并定义为常量:

EML_MIMETYPE = 'message/rfc822'

我通过在终端中对测试 .eml 文件使用 file 命令找到了 .eml 文件的正确 MIME 类型:

$ file -b --mime-type ~/Desktop/noname.eml

但是,当我对示例 .msg 文件执行此操作时,它会返回看起来像是损坏的 MIME 类型的内容

$ file -b --mime-type ~/Desktop/testemail.msg
>application/CDFV2-corrupt
Run Code Online (Sandbox Code Playgroud)

在线查看,此链接http://social.msdn.microsoft.com/Forums/en-US/8efe300d-c917-4be7-a0f3-e620e029842b/what-mime-type-can-i-use-for-msg-files ?forum=netfxnetcom建议也许使用 MIME 类型“application/vnd.ms-outlook”,但我没有运气。

有什么建议么?我正在运行 linux xubuntu 14.04,该应用程序使用 Rails 3.2.18 和 ruby​​ 1.9.3p392

ruby outlook ruby-on-rails paperclip-validation

6
推荐指数
1
解决办法
1467
查看次数

为什么某些 MP4 文件的 mime-type 是 application/octet-stream 而不是 video/mp4?

为什么某些 MP4 文件的 mime-type 是 application/octet-stream 而不是 video/mp4?

我已经在终端 (CLI) 中使用文件命令进行了检查

user@anto:~/Videos/VTB$ file --mime-type -b GDPR.mp4 
video/mp4
user@anto:~/Videos/VTB$ file --mime-type -b Test-vid1.mp4 
application/octet-stream
user@anto:~/Videos/VTB$ file --mime-type -b SampleVideoLarge.mov 
video/quicktime
user@anto:~/Videos/VTB$ file --mime-type -b SampleVideo21.mp4 
video/mp4
user@anto:~/Videos/VTB$ file --mime-type -b VTBSample-new.mp4 
application/octet-stream.
Run Code Online (Sandbox Code Playgroud)

谁能告诉我原因吗?如何处理这种哑剧类型。带有application/octet-stream 的视频文件是正确的 mp4 文件还是错误的文件?

video ruby-on-rails paperclip-validation

6
推荐指数
1
解决办法
2万
查看次数