Ruby on rails 如何验证下载的文件格式

Ruby on rails 如何验证下载的文件格式,ruby-on-rails,pdf,file-format,Ruby On Rails,Pdf,File Format,我的服务器可以存储扩展名为*.pdf的文件。 我应该检查文件格式还是正确的扩展名就足够了?扩展名不足以证明文件具有正确的格式。你可以命名任何东西。在文件的打开和读取过程中,检查格式(无论是通过应用程序本身还是通过其他方式进行验证)。Shadowland是正确的,快速检查可以避免以后的许多痛苦。如果每次有客户说“我确实使用了PDF,我把Word文件改成“PDF”,然后邮寄出去”时我都有一角硬币,我就有足够的钱喝一杯咖啡了 这里有一个快速检查,如果您不想在上传时使用完整的PDF处理gem。根据,每个

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

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

Shadowland是正确的,快速检查可以避免以后的许多痛苦。如果每次有客户说“我确实使用了PDF,我把Word文件改成“PDF”,然后邮寄出去”时我都有一角硬币,我就有足够的钱喝一杯咖啡了

这里有一个快速检查,如果您不想在上传时使用完整的PDF处理gem。根据,每个PDF文件都应该以

%PDF−<version-number>
%PDF−1.7
如果不过度设计一个经得起未来考验的解决方案(当我们达到PDF规范10.0版时会发生什么?),我会尝试阅读文件的开头,并确保它的形式是

%PDF-<digit>.<digit>

非常感谢,鲍勃!你的解决方案很好。我解析远程文件,并稍微更改您的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

我拿了我的Word文件,把名字改成了“pdf”,然后把它寄了出去+1) )Adobe Acrobat不要求PDF文件以%PDF-d.d开头。它可以位于前1024字节的任何位置。
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