如何改变这个代码位,所以我只允许PDF文件上传:只允许PDF文件被上传
unless @file.content_type =~ /^image/
errors.add(:file, "is not a recognized format")
return false
end
如何改变这个代码位,所以我只允许PDF文件上传:只允许PDF文件被上传
unless @file.content_type =~ /^image/
errors.add(:file, "is not a recognized format")
return false
end
没有使用过这一点,但在PDF MIME类型的应用程序/ PDF ,所以它应该只是:
unless @file.content_type =~ /^application\/pdf$/
当然,该代码是可怕的不安全。它依靠浏览器发送文件来获取正确的MIME类型,并假定没有人发送黑客请求。
坦率地说,除非您打开文件并对其进行解析,否则无法确定上传的任何文件是否属于特定类型。
你将不得不:
您不能依赖浏览器提供给您的MIME类型。 只有这样做的方法是验证文件。您可以使用标记等来检查格式,但最简单和最健壮的方法是使用适当的库调用打开它。
为什么你不能依赖MIME类型? – alamodey 2009-05-25 13:24:27
这是正确的。当然,您可以首先拒绝基于MIME类型的文件,但最终您将不得不使用安全的解析器并处理任何错误。 – 2009-05-25 13:49:02