我正在制作一个上传多张图片的表单,如何对只有' jpg',' png',' gif'将成功上传并跳过那些不可接受的文件(例如doc)?目前我的代码只允许上传,如果所有文件都是可接受的类型,即使只有一个文件是不可接受的文件类型,也会提示错误
if ($source_type === NULL) {
echo '<h3>Error</h3><br/>';
echo 'Invalid file type<br/><br/>';
echo '<input type="submit" style="color:#000000" onClick="history.go(-1);return true;" value="Back"><br/><br/>';
}
switch ($source_type) {
case IMAGETYPE_GIF:
$source_gd_image = imagecreatefromgif($source_file_path);
break;
case IMAGETYPE_JPEG:
$source_gd_image = imagecreatefromjpeg($source_file_path);
break;
case IMAGETYPE_PNG:
$source_gd_image = imagecreatefrompng($source_file_path);
break;
default:
return false;
}
答案 0 :(得分:1)
您可以使用in_array()
。
$source_type_allowd = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
$source_type = exif_imagetype($_FILES['file_upload']['tmp_name']);
$error = !in_array($source_type, $source_type_allowd);// error
exif_imagetype - 确定图像的类型。
其他选项: -
$mime_type = $_FILES['file_upload']['type'];
$allowed = array("image/jpeg", "image/gif", "image/png");
if(!in_array($mime_type, $allowed)) {
$msg = 'Only jpg, jpeg, and png files are allowed.';
}else{
// Upload process
}
答案 1 :(得分:0)
您可以使用preg_match()
这样的功能:
$filename = $_FILES['upload_file']['name'];
if(preg_match("/\.(gif|png|jpg)$/", $filename)){
//file is gif/png/jpg
}
else{
//invalid file format
echo 'File should be gif|png|jpg';
}