我有一个允许上传大多数文件类型的上传表单。 在这里,他们是:PHP安全文件上传
- 图片:JPG/JPEG/PNG/GIF ...
- 视频:MP4/AVI/WMV ...
- 另一个文件:DOC/PDF/RAR/ZIP/mp3/...
对于图像文件,我知道我可以使用PHP函数getimagesize()或其他东西来确保它是真实的图像。但其他文件如视频和文档如何?这是一个真正的文件,没有伪造扩展名?
如何做到这一点?
谢谢!我需要你的帮助。
我有一个允许上传大多数文件类型的上传表单。 在这里,他们是:PHP安全文件上传
对于图像文件,我知道我可以使用PHP函数getimagesize()或其他东西来确保它是真实的图像。但其他文件如视频和文档如何?这是一个真正的文件,没有伪造扩展名?
如何做到这一点?
谢谢!我需要你的帮助。
每一个文件都有它自己的类型,称为MIME类型,以便ü可以检查MIME类型,做这样的一些东西:
if (mime_content_type($FILES['file']['tmp'])== "image/png"))
{
// do upload
}else{
die('file type not supported');}
ü可以把所有的MIME类型到一个数组检查与in_array功能 类型u能找到所有的MIME类型在这里:http://www.freeformatter.com/mime-types-list.html
任何客户端检查(甚至是浏览器的MIME类型检测),是注定要失败,因为用户可以访问它。您最好让上传开始并完成,然后执行严重的服务器端检查。如果这不符合您的预期,您只需放弃该文件即可。
在服务器端的顶部检查,你当然可以实现客户端检查只是一个整洁的用户体验
充分确保文件上传的唯一方法就是尝试用PHP解析上传的文件或其他一些需要特定有效文件类型的扩展/工具。换句话说:
从查看getID3扩展,这可能是最好的选择,因为它似乎是解析各种各样的内容类型。
在任何情况下,您基本上需要的是PHP或其他第三方库/扩展程序来确定文件的二进制数据与其MIME内容类型相对应。
希望这有助于:)
看到这样的回答:http://stackoverflow.com/q/134833/467164 –