上传文件时,我得到的mime类型为application/octet流。
我知道了Zend_Frameworks试图通过两种方式确定mimetype:
首先,它尝试使用PECL FILEINFO扩展(不是每个服务器上都安装)如果扩展没有安装,它会尝试使用mime_tent_type(一个php函数)。但是,自php 5.3版起,该函数已被弃用
那么现在该怎么办呢?我如何才能确保用户上传的文件只是图像,而不是其他东西?如何检测上传文件的mime类型?
对于映像,您也可以依赖exif_imagetype
,但我建议您安装finfo
。
有关示例实现,请参见此。
使用Zend_File_Transfer验证器排除您不想要的类型:
$upload = new Zend_File_Transfer();
// Does not allow MIME type application/pdf and application/zip .
$upload->addValidator('ExcludeMimeType', false, array('application/pdf',
'application/zip'));
或者你也可以使用IsImage验证器来检查传输的文件是否是图像文件:
$upload = new Zend_File_Transfer();
// Checks whether the uploaded file is a image file
$upload->addValidator('IsImage', false);