如何验证下载的文件格式

时间:2011-10-27 17:08:17

标签: ruby-on-rails pdf file-format

我的服务器可以存储扩展名为* .pdf的文件。 我应该检查文件格式右扩展是否足够?

3 个答案:

答案 0 :(得分:1)

扩展不足以证明文件格式正确。你可以命名任何.pdf。在文件的打开和读取中检查格式(无论是通过应用程序本身还是其他一些验证方式)。

答案 1 :(得分:0)

Shadowland是对的,快速检查可以在以后节省很多痛苦。如果我每次客户说“我不会使用PDF,我就有一分钱”。我拿了我的Word文件,将名称改为' pdf,'邮寄了!"我有足够的咖啡。

如果您不想在上传时使用完整的PDF处理宝石,请快速检查一下。根据{{​​3}},每个PDF文件都应以

开头
%PDF−<version-number>

例如,PDF版本1.7文件将以

开头
%PDF−1.7

如果没有过度设计一个面向未来的解决方案(当我们达到PDF规范版本10.0时会发生什么?),我会尝试阅读文件的开头并确保它的形式。 ..

%PDF-<digit>.<digit>

或者,在Ruby中编写它(使用错误安全块和regexp&#39;)......

contents = File.open('Full_path_to_my_file', 'r') { |f| f.read(8)}
is_pdf = (contents =~ /\%PDF-\d\.\d/) == 0

答案 2 :(得分:0)

非常感谢,鲍勃!你的解决方案很棒。我解析远程文件,并稍微更改你的reg exp:

file_url = 'http://...../file_name.pdf'
file = open(file_url)
contents = file.read(10)
is_pdf = (contents =~ /\%PDF-\d+\.?\d+/) == 0
render :text => is_pdf