我正在做一个上传多个图像的表单,我如何编码,以便只有"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;
}
您可以使用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
}
你可以像这样使用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';
}