文件类型过滤器在PHP文件上传中不起作用


filetype filter does not work in php file upload

我想让我的用户上传图像只是在PNG和JPG和JPEG文件类型。所以我在我的html文件中使用以下代码:

<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
    <meta charset="utf-8" />
    <link href="assets/css/style.css" rel="stylesheet" />
    <script type="text/javascript" src='jquery.min.js' ></script>
    <script type="text/javascript">
    //<![CDATA[
        function upload_start(){
              document.getElementById('upload-process').style.visibility = 'visible';
              return true;
        }
        function upload_end(check_upload){
          var server_response = '';
          if (check_upload == 1){
             server_response = '<span class="ok">File Uploaded<'/span>';
          }
          else {
             server_response = '<span class="error">file Upload error<'/span>';
          }
          document.getElementById('upload-process').style.visibility = 'hidden';
          document.getElementById('upload-form').innerHTML = server_response;
          return true;   
    }
    //]]>
    </script>
</head>
<body>
            <form action="php-ajax-upload.php" method="post" enctype="multipart/form-data" target="upload-target" onsubmit="upload_start();">
            <label for="user-file"></label>
            <input type="file" id="user-file" name="user-file" />
            <input type="hidden" name="customer_id"  value="6000" />
            <input type="submit" value="Upload File" />
            </form>

php-ajax-upload.php含量为:

<html>
<head>
<link href="assets/css/style.css" rel="stylesheet" />
</head>
<body>
<?php
$customer_id = $_POST['customer_id'] ;
if ( ($_FILES["user-file"]["type"] == "image/jpeg" )|| ($_FILES["user-file"]["type"] == "image/jpg" )|| ($_FILES["user-file"]["type"] == "image/png" ) ) 
{
    if ($_FILES["user-file"]["error"] > 0){
        echo "<div class='"server'">Error: " . $_FILES["user-file"]["error"] . "</div><br />";
        $check_result = 0;
        }
    else{
        if (file_exists("user-upload/" . $_FILES["user-file"]["name"])){
            echo "<div class='"server'">This file exists <br /><br />".$_FILES["user-file"]["name"]. "</div><br />";
            $check_result = 0;      
            }
        else{
                if(isset($_POST['customer_id']) && !empty($_POST['customer_id'])  )
                {
                    $customer_id = trim($_POST['customer_id']);
                    $filename  = basename($_FILES['user-file']['name']);
                    $format = pathinfo($filename, PATHINFO_EXTENSION);
                    $saved_file_name = $customer_id.'.'.$format ;
                    if(is_writable(dirname(__FILE__) . './admin-upload/'. $saved_file_name))
                    {
                      unlink(dirname(__FILE__) . './admin-upload/'. $saved_file_name ); 
                    }
                    if(is_writable(dirname(__FILE__) . './admin-upload/'.$customer_id.'.jpeg'))
                    {
                      unlink(dirname(__FILE__) . './admin-upload/'.$customer_id.'.jpeg' ); 
                    }
                    if(is_writable(dirname(__FILE__) . './admin-upload/'.$customer_id.'.jpg'))
                    {
                      unlink(dirname(__FILE__) . './admin-upload/'.$customer_id.'.jpg' ); 
                    }
                    if(is_writable(dirname(__FILE__) . './admin-upload/'.$customer_id.'.png'))
                    {
                      unlink(dirname(__FILE__) . './admin-upload/'.$customer_id.'.png' ); 
                    }
                    move_uploaded_file($_FILES["user-file"]["tmp_name"],"admin-upload/".$customer_id.'.'.$format ) ;
                    $check_result = 1;
                }
                else
                {
                    echo 'Id not found !';
                    $check_result = 0;  
                }
            }
    }
}
else{
    if($_FILES["user-file"]["size"] > 1000000){
        echo "<div class='server red bold'>File is Large</div>";
    }
    else{
        echo "<div class='server red bold'> File Type is not Valid !</div>";
    }
    $check_result = 0;
}
?>

<script type="text/javascript">
window.top.window.upload_end(<?php echo $check_result; ?>);
</script>
</body>
</html>

现在,当我想检查我的代码,当我选择一个图像它工作良好,也当我选择其他文件类型,如:pdf, doc, srt, ....代码运行良好,会说:文件类型无效但只有当我选择mp3文件时,php-ajax-upload.php文件错误:

注意:未定义索引:customer_id在D:'Software'wamp'www'garanti'php-ajax-upload.php第7行

注意:未定义索引:user-file inD:'Software'wamp'www'garanti'php-ajax-upload.php on line 9

注意:未定义索引:user-file inD:'Software'wamp'www'garanti'php-ajax-upload.php on line 9

注意:未定义索引:user-file inD:'Software'wamp'www'garanti'php-ajax-upload.php on line 9

注意:未定义索引:user-file inD:'Software'wamp'www'garanti'php-ajax-upload.php on line 64

最后在页面末尾写着:

文件类型不合法!

我不知道为什么这个错误只会发生在mp3文件?

这听起来可能与你的php.ini设置有关。

我假设mp3文件比您尝试成功上传的任何其他文件都大。如果文件的大小大于php.ini设置post_max_size,那么PHP将从帖子中丢失数据,我认为这就是这里发生的事情。mp3文件可能已经上传,但是POST中的其他变量丢失了。

检查post_max_size,它的默认值是3Meg,您可能必须增加它。请记住,它将需要> upload_max_filesize,以确保您不会丢失这些其他POST变量。