PHP图片上传问题,视频扩展不返回错误


php image upload issue , video extensions does not return error

php代码:

<?php
if (isset($_FILES['image'])) {
    $errors = array();
    $allowed_ext = array ('jpg','gif','png','jpeg');
    $file_name = $_FILES ['image']['name'];
    $file_ext = explode('.', $file_name);
    $file_ext = end ($file_ext);
    $file_ext = strtolower($file_ext);
    echo $file_ext;
    $file_size = $_FILES ['image']['size'];
    $file_tmp = $_FILES ['image']['tmp_name'];
    if (!in_array($file_ext, $allowed_ext)) {
        $errors[] = "File extension is not allowed.";
    }
    if ($file_size > 2097152 ) {
        $errors[] = "File size is greater than 2 megabytes.";
    }
    if (count($errors) > 0) {
        foreach ($errors AS $error) {
            echo $error . "<br />";
        }
    } else {
        $file_name = md5(microtime()).".".$file_ext;
        if (move_uploaded_file($file_tmp, $avatar_folder.$file_name)) {
        }
    }
}
?>
html代码:
<div id="form_part">
<form action="" method="POST" enctype="multipart/form-data">
    <p>
        <input type="FILE" name="image">
        <input type="submit" value="upload">
    </p>
</form>
</div> <!-- end form_part -->

现在,问题是,你可以看到我在数组中指定图像文件类型,允许上传特定的扩展名,防止其他人,如果文件类型不存在于此数组中,则返回错误消息,但当我用视频文件测试此文件时,该文件未上传到上传目录,但错误消息不显示,虽然当我上传txt,rar,pdf等.....时显示

试试这个代码

$allowed_exts = array('.png','.gif','.jpg','.jpeg') ; // Our Allowed Extentions
$errors       = array() ;                             // Our Error Array
$file_name    =  $_FILES['image']['name'] ;           
$file_size    =  $_FILES['image']['size'] ;
$file_ext     = strtolower(strrchr($file_name,'.')); // File Extention
if(!in_array($file_ext,$allowed_exts))
        {
          array_push($errors,'NoT Allowed');
        }
elseif($file_size > 2097152)
        {
          array_push($errors,'More Than 2 mb');
        }

if(count($errors) > 0)
        {
          var_dump($errors) ;
        }
else
        {
          $new_name      = substr(md5(rand().time()),0,8).$file_ext ;
          $upload        = move_uploaded_file($_FILES['image']['tmp_name'],$avatar_folder.$new_name )  ;

          if($upload)
                         {
                           echo 'Image Uploaded ';
                         }
          else
                         {
                           var_dump($errors) ;
                         }

        }

编写test.php并放置以下代码:

phpinfo();

此代码将打印服务器配置页。查找"upload_max_filesize"的值。它告诉你可以上传多大的文件

如果这个值太小,大多数托管公司允许在。htaccess文件中使用以下行修改它:

php_value upload_max_filesize 50M
顺便说一下,你的代码不检查错误。在顶部,您需要添加以下行:
if ($_FILES['image']['error'] == UPLOAD_ERR_OK) {
   //do your code
} else {
   echo $_FILES['audio']['error'];
   //Error messages explained here: http://php.net/manual/en/features.file-upload.errors.php
}