我正在制作一个页面,用户可以在其中上传文件,如果文件类型是jpg、gif和pdf,我需要一个if语句来创建一个$error变量。
下面是我的代码:
$file_type = $_FILES['foreign_character_upload']['type']; //returns the mimetype
if(/*$file_type is anything other than jpg, gif, or pdf*/) {
$error_message = 'Only jpg, gif, and pdf files are allowed.';
$error = 'yes';
}
我在组织if语句时遇到了困难。我该怎么说呢?
5条答案
按热度按时间but5z9lq1#
将允许的类型放入数组中,然后使用
in_array()
。u3r8eeie2#
编辑
我刚刚意识到你也想允许PDF文件。如果是这样的话,请查看PHP's Fileinfo class and functions。但是就安全性而言,你仍然不应该依赖
$_FILES[]['type']
:)我将把其余部分留在这里,以防对发现此问题的其他人有所帮助
对于检查图像的mime类型,
$_FILES[]['type']
可能不安全。此数据由浏览器发送,很容易被欺骗。如果你只想上传图片,你应该使用
getimagesize()
函数(尽管它的名字可能会让人误解),这个函数不仅会给你图片的大小,而且会给你所有你可能需要的关于图片的数据。我在图像处理类中使用了以下脚本:
注意
getimagesize()
返回一个包含'mime'索引的关联数组,这里的数据是可靠的。在另一个函数中,我检查了图像的mime类型,并使用适当的GD函数将其转换为PNG:
你可能不需要做所有这些,但是你可以看到你指定的文件类型的mime类型,注意一个jpeg可能有两种不同的mime类型。
希望这个有用。
aor9mmx13#
请参阅Zend Framework的Zend_File_Transfer_Adapter_Http和Zend_Form_Element_File.您可以添加多个不同的验证器,如最小图像分辨率,MIME类型,最小文件大小,允许的文件扩展名等.
vwhgwdsa4#
使用这个简单的代码...
jchrr9hc5#
您也可以在前端尝试过滤或允许您想要接受的文件类型。