仅上传可接受的文件类型 PHP


upload acceptable file type only php

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