(rails)如何验证上传的.txt文件是否不是图像文件?

时间:2009-11-06 05:40:51

标签: ruby-on-rails validation file-upload

我有一个上传文本文件字段,并且我计划将文件保存在某处,然后将文件的位置存储在数据库中。但是,我想确保他们上传的文件是.txt文件,而不是图像文件。我想这会发生在验证步骤中。如何验证这样的事情?另外,如何获取上传文件的文件名?我总是可以检查它是否说'.txt'但是为了将来的参考,知道如何在没有文件名的情况下进行验证会有所帮助。

2 个答案:

答案 0 :(得分:7)

尝试根据文件扩展名验证文件的内容,为重大黑客行为打开了大门。更改扩展名并上传文件非常简单。

如果您使用的是基于Mac / Linux / Unix的系统,则OS“file”命令是标准的,因为它在文件中查找标记文件类型的关键字节。 http://en.wikipedia.org/wiki/File_(Unix)我不确定适用于Windows的内容,但这可能有所帮助:Determine file type in Ruby

答案 1 :(得分:0)

实现它的一种方法,真正的简单方法是将文件传递给图像加载器,最好是处理多种常见格式的图像加载器,并查看它是否会抛出错误。

另一种方法是手动检查常见图像格式标题的文件头。例如,.bmp文件以BM开头。其他格式有自己特定的标记,可以使用。