Что-то не так с моим кодом? Многократная загрузка файла PHP - PullRequest
0 голосов
/ 07 октября 2010

Вот код, который я сделал, я ожидаю, что он будет работать, но где-то должна быть ошибка. Я не могу понять себя, пожалуйста, помогите.

<?php

if(isset($_POST['submit'])){

    $max_size = 500000;
    $image_upload_path = "images/products/";
    $allowed_image_extension = array('jpg','jpeg','png','gif');


    for($i=0;$i<2;$i++)
    {
         //check if there is file 
        if((!empty($_FILES['image[]'][$i])) && ($_FILES['image[]']['error'][$i]==0))
        {
            //check extension
            $extension = strrchr($_FILES['image']['name'][$i], '.');
            if(in_array($extension,$allowed_image_extension))
            {
                //check file size.
                if($_FILES['image']['size'][$i] > $max_size)
                {
                    echo "file too big";
                }
                else if($_FILES['image']['size'][$i] < 1)
                {
                    echo "file empty";
                }
                else
                {
                    //we have pass file empty check,file extension check,file size check.
                    $the_uploaded_image = $_FILES['image']['tmp_name'][$i];
                    $the_uploaded_image_name = $_FILES['image']['name'][$i];

                    //replace empty space in filename with an underscore '_'
                    $the_uploaded_image_name = preg_replace('/\s/','_',$the_uploaded_image_name);

                    //get the file extension
                    $the_uploaded_image_extension = explode(',',$the_uploaded_image_name);
                    $the_new_image_name = $the_uploaded_image_name."".md5(uniqid(rand(),true))."".$the_uploaded_image_extension;

                    $save_image_as = $the_new_image_name;
                    //check file exist
                    if(file_exists($image_upload_path."".$the_new_image_name))
                    {
                        echo "file".$image_upload_path."".$the_new_image_name." already exist";
                    }
                    else
                    {
                        if(move_uploaded_file($the_uploaded_image,$save_image_as))
                        {
                            echo "image".$the_uploaded_image_name." uploaded sucessfully";
                            //set the image  path to save in database column
                        }
                        else
                        {
                            echo "there was an error uploading your image.";
                        }
                    }
                }
            }
            else
            {
            echo "extension not allowed";
            }
        }
        else
        {
            echo "please choose file to upload";
        }
    }


}

?>

<html>
<head><title>image upload</title></head>
<body>
<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="image[]"/>
    <input type="file" name="image[]"/>
    <input type="submit" value="submit"/>
</form>
</body>
</html>

Это мой новый код PHP. Я получаю оба результата как найденный найденный не найденный не найденный. Кто-нибудь скажет мне, что я здесь делаю неправильно? Кажется, что условие if else не работает, так как оба условия дают выход. Почему?

<?php
if(isset($_POST["submit"])) {
    echo $_POST["submit"];
    echo "<br/>";
    for($i=0;$i<count($_FILES['image'])-1;$i++)
    {
        if(!empty($_FILES['image']['tmp_name'][$i]))
        {
            echo "found";    
            echo "<br/>";
        }
        else
        {
            echo "not found";
            echo "<br/>";
        }
    }

}
else
{
    echo "form is not posted";
}

?>

1 Ответ

3 голосов
/ 07 октября 2010

Я предполагаю, что очевидным WTF будет $_FILES['image[]'][$i], который должен быть просто $_FILES['image'][$i] ([] в имени делает его массивом, а не частью имени).

I 'Я не желаю устранять неисправности, кроме этого, без дополнительной информации.Попробуйте это в разных местах кода:

<code>echo '<pre>';
var_dump($_POST); // or other variables
echo '
';

Это должно помочь вам отладить собственный код, чему вы должны научиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...