多图片上传问题

时间:2016-10-03 15:47:28

标签: php mysql image

我有一个简单的脚本,可以在我的服务器上传文件并将详细信息插入数据库。

使用下面的代码,我收到两个错误..

  1. 我试图只允许.jpg。 gif和.png格式但不起作用..所有格式都上传到服务器上..

  2. 如果上传文件为空,则将数字导入数字(1,2,3 ...)到Mysql中。

  3. 我试了好几个小时来解决这些问题,但我不知道什么是错的。

    谢谢..

     <?php
    
          include_once('connect.php');
    
            if(isset($_FILES['files'])){
                $errors = array();
                foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
                    $file_name = $key.$_FILES['files']['name'][$key];
                    $file_size = $_FILES['files']['size'][$key];
                    $file_type = $_FILES['files']['type'][$key];
    
                    if($file_type == "image/gif"){
                        $sExt = ".gif";
                    } elseif($file_type == "image/jpeg" || $file_type == "image/pjpeg"){
                        $sExt = ".jpg";
                    } elseif($file_type == "image/png" || $file_type == "image/x-png"){
                        $sExt = ".png";
                    }
                    if (!in_array($sExt, array('.gif','.jpg','.png'))) {
                        $errors[] = "Image types alowed are (.gif, .jpg, .png) only!";
                    }
                    $file_tmp = $_FILES['files']['tmp_name'][$key];
                    $file_type = $_FILES['files']['type'][$key];
                    if($file_size > 2097152){
                        $errors[]='File size must be less than 2 MB';
                    }       
                    $query = "INSERT into offers_pics (`offer_id`,`pic_name`,`pic_type`) VALUES ('$user_id','$file_name','$file_type'); ";
                    $result = mysqli_query($link,$query);
    
                    $desired_dir = "user_data";
                    if(empty($errors) == true){
                        if(is_dir($desired_dir) == false){
                            mkdir("$desired_dir", 0700);        // Create directory if it does not exist
                        }
                        if(is_dir("$desired_dir/".$file_name) == false){
                            move_uploaded_file($file_tmp,"$desired_dir/".$file_name);
                        }else{                                  // rename the file if another one exist
                            $new_dir = "$desired_dir/".$file_name.time();
                             rename($file_tmp,$new_dir) ;               
                        }
                    }else{
                            print_r($errors);
                    }
                }
                if(empty($error)){
                    echo "Success";
                }
            }
            ?>
    
    
        <form action="" method="POST" enctype="multipart/form-data">
            <input type="file" name="files[]"> <br/>
            <input type="file" name="files[]"> <br/>
            <input type="file" name="files[]"> <br/>
            <input type="file" name="files[]"> <br/>
            <input type="file" name="files[]" > <br/><br/>
            <input type="submit"/>
        </form>
    
        enter code here
    

1 个答案:

答案 0 :(得分:1)

对于第一个错误,错误数组在foreah之外,因此您不清除每个文件的错误,并且要插入的查询在if之外检查错误,因此总是ecexcuted

对于第二个错误相同,执行查询时,您必须检查文件是否已上传。

{{1}}