【问题标题】:upload acceptable file type only php仅上传可接受的文件类型 php
【发布时间】:2016-01-22 06:47:14
【问题描述】:

我正在做一个上传多张图片的表单,我如何编码以使只有“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;
}

【问题讨论】:

    标签: php


    【解决方案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
        }
    

    【讨论】:

      【解决方案2】:

      你可以像这样使用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';
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-02
        • 2012-09-16
        • 2016-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多