Heroku Paperclip出现奇怪错误:Paperclip::Errors::MissingRequiredValidatorError。

23
我已将一个Rails应用程序部署到Heroku,更改域名前一切正常。在本地它也可以运行良好,但现在出现以下错误:Paperclip :: Errors :: MissingRequiredValidatorError 。 Heroku上设置了s3环境变量,但我找不到为什么会出现此错误,需要帮助。编辑:供将来参考,这与Heroku无关,一旦重新绑定,本地也会抛出相同的错误,就像答案所建议的那样。
4个回答

52

从两天前发布的4.0版本开始,Paperclip要求文件和MIME类型验证。只需将以下内容添加到您的模型即可:

validates_attachment_content_type :file_name, :content_type => %w(image/jpeg image/jpg image/png)

重要提示:请替换文件名和内容类型,以适应您的项目。

这在本地工作是因为您可能尚未更新paperclip。


3
另外,在 has_attached_file 之后似乎您需要这个。 - complistic
请参阅Paperclip文档中的安全验证部分以获取其他选项:https://github.com/thoughtbot/paperclip - steakchaser
2
此外,您还可以传递 do_not_validate_attachment_file_type :file_name 以忽略此安全要求。仅在您信任用户上传的情况下,在受控环境下使用此选项。 - Joshua Pinter

2

Paperclip(版本4)现在默认情况下是安全的。您必须验证mime类型或文件名,或明确关闭验证。

这是为了防止内容类型欺骗,例如上传php文件而不是图像,然后该文件将变为公共可访问。

推荐的解决方案如下:

validates_attachment_content_type :image, :content_type => /\Aimage/

文档在这里:https://github.com/thoughtbot/paperclip#security-validations

请注意,这不仅仅是一个S3问题。


2
或者只需将此放置并忽略所有内容
do_not_validate_attachment_file_type :image

0

试试这个 -

validates_attachment_content_type :file_name, :content_type => /\Aimage/.*\Z/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接