如何验证上传的文件是否为图像?[文件通过HTML5's文件API发送,通过php://input接收]


How to validate if uploaded file is an image? [file sent via HTML5's File API, received via php://input]

我正在使用HTML5的文件API(教程在这里),我需要验证文件是否为图像。主要问题是,对于正常的上传,我可以调用getimagesize(),并将临时文件的路径作为参数,然后决定是否将其存储在服务器上。

然而,使用文件上传API,文件被php://input接收,它返回传输的实际位。

在这种情况下,验证的最佳方式是什么?我是否必须将比特存储到物理位置,然后验证并删除它,或者它是一个更好的方法?

谢谢。

如果是图像,你会把它存储在磁盘上吗?如果是,那么我想说最好的方法是创建一个临时文件,写数据,然后检查它是否是一个图像与常规函数,如果它是移动临时文件到最终目的地,否则只是删除它。

如果出于某种原因您不想这样做,您可以检查传入数据中的幻数(这里是一个更完整的列表)。然而,请记住,这比通常的解决方案更有可能失败。