如何验证下载的文件格式
我的服务器可以存储扩展名为 *.pdf 的文件。 我应该检查文件格式或正确的扩展名是否足够?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我的服务器可以存储扩展名为 *.pdf 的文件。 我应该检查文件格式或正确的扩展名是否足够?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
扩展名不足以证明文件具有正确的格式。您可以将任何名称命名为 .pdf。在打开和读取文件时检查格式(无论是通过应用程序本身还是通过其他某种验证方式)。
Extension isn't sufficient to prove that a file has the right format. You could name anything .pdf. It's in the opening and reading of the file that the formatting is checked (whether by the application itself or some other means of verifying).
非常感谢,鲍勃!你的解决方案很棒。我解析远程文件,并稍微更改您的 reg exp :
Thanks a lot, Bob! Your solution is great. I parse remote file, and change your reg exp a bit:
Shadowland 是对的,快速检查会在以后减少很多痛苦。如果每次客户说“我确实使用了 PDF。我把我的 Word 文件,将名称更改为“pdf”,然后邮寄了它,我就能得到一毛钱!”我足够喝杯咖啡了。
如果您不想在上传时使用成熟的 PDF 处理 gem,可以快速检查一下。根据 Adobe 的 PDF 规范,每个 PDF 文件都应以
例如,PDF 版本 1.7 文件将以 开头
无需过度设计面向未来的解决方案(当我们达到 PDF 规范版本时会发生什么10.0?),我会尝试读取文件的开头并确保它的形式...
或者,用 Ruby 编写(使用错误安全块和正则表达式,)...
Shadowland is right, a quick check will save a lot of pain later. If I had a dime for every time a customer said "I DID use a PDF. I took my Word file, changed the name to 'pdf,' and mailed it!" I'd have enough for a cup of coffee.
Here's a quick check, if you don't want to use a full-blown PDF-handling gem at upload time. According to Adobe's PDF spec, every PDF file should begin with
For example, a PDF version 1.7 file will begin with
Without over-engineering a future-proof solution (what happens when we reach PDF spec version 10.0?), I'd try reading the beginning of the file and make sure that it's of the form...
Or, to write that in Ruby (using error-safe blocks and regexp's,)...