我的服务器可以存储扩展名为* .pdf的文件。 我应该检查文件格式或右扩展是否足够?
答案 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