上传可接受的文件类型只有PHP

时间:2016-01-22 06:47:14

标签: 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;
}

2 个答案:

答案 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';
}