PHP $ _FILES то же имя изображения

Я пытаюсь загрузить несколько изображений на php-сервер, но по какой-то причине он использует первое имя изображения для всех загруженных изображений, сохраняя то же имя изображения. Я хочу, чтобы это было сохранено в их имени файла в исходной папке. Как и Banner1.jpg, Banner2.jpg и Banner3.jpg должны быть сохранены. Но он сохраняет первое изображение трижды.

$filesCount = count($_FILES['photos']['name']);
            $success = 0;
            for($i = 0; $i < $filesCount; $i++)
            {
                $uploadedfile = $_FILES['photos']['tmp_name'][$i];

                if ($uploadedfile)
                {
                    $filename  = stripcslashes($_FILES['photos']['name'][$i]);
                    $extension = $this->getExtension($filename);
                    $extension = strtolower($extension);

                    if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif")) 
                    {       
                        $change='<div class = "msgdiv">Unknown Image extension </div>';
                    }
                    else
                    {
                        $size = filesize($_FILES['photos']['tmp_name'][$i]);
                    }
                    if ($size > MAX_SIZE*1024)
                    {
                        $change='<div class = "msgdiv">You have exceeded the size limit!</div> ';
                    }
                    if ($extension= = "jpg" || $extension= = "jpeg" )
                    {
                        $uploadedfile = $_FILES['photos']['tmp_name'][$i];
                        $src = imagecreatefromjpeg($uploadedfile);
                    }
                    else if ($extension= = "png")
                    {
                        $uploadedfile = $_FILES['photos']['tmp_name'][$i];
                        $src = imagecreatefrompng($uploadedfile);
                    }
                    else 
                    {
                        $src = imagecreatefromgif ($uploadedfile);
                    }

                    list($width,$height)=getimagesize($uploadedfile);   
                    $newwidth=1024;
                    $newheight=($height/$width)*$newwidth;
                    $tmp=imagecreatetruecolor($newwidth,$newheight);

                    $newwidth1=300;
                    $newheight1=($height/$width)*$newwidth1;
                    $tmp1=imagecreatetruecolor($newwidth1,$newheight1);

                    imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
                    imagecopyresampled($tmp1,$src,0,0,0,0,$newwidth1,$newheight1,$width,$height);

                    $filenameee = "server/php/rental/". $_FILES['photos']['name'][$i];
                    $filenameee1 = "server/php/rental/small/". $_FILES['photos']['name'][$i];

                    imagejpeg($tmp,$filenameee,100);
                    imagejpeg($tmp1,$filenameee1,100);
                    imagedestroy($src);
                    imagedestroy($tmp);
                    imagedestroy($tmp1);
                    if (mysql_query("INSERT INTO fc_rental_photos(product_image,product_id) VALUES('$filename','$prd_id')"))
                    {
                        $success++;
                    }
                }

Вот поле ввода, которое я использую для загрузки изображений.

<form id = "imageform" method = "post" enctype = "multipart/form-data" action = "/path-to-controller-method/">
<input type = "file" name = "photos[]" id = "photoimg" multiple onchange = "imageval();">
</form>

IMageVal

function imageval(){   /*Image size validation*/

      var fi = document.getElementById('photoimg');

       if (fi.files.length > 0) {      // FIRST CHECK IF ANY FILE IS SELECTED.

             for (var i = 0; i <= fi.files.length - 1; i++) {
                 var fileName, fileExtension, fileSize, fileType, dateModified;

                 fileName = fi.files.item(i).name;
                 fileExtension = fileName.replace(/^.*\./, '');
                 if (fileExtension == 'png' || fileExtension == 'jpg' || fileExtension == 'jpeg') {

                    var reader = new FileReader();

                    //Read the contents of Image File.

                    reader.readAsDataURL(fi.files.item(i));

                    reader.onload = function (e) {

                        //Initiate the JavaScript Image object.

                        var image = new Image();

                        //Set the Base64 string return from FileReader as source.

                        image.src = e.target.result;

                        //Validate the File Height and Width.

                        image.onload = function () {

                        var height = this.height;

                        var width = this.width;



                        if (width < 1450 || height < 500) {

                        alert("Image Height and Width should be Above 1450 * 500 px.");

                        return false;

                        }

                        <?php if ($aws == 'Yes') echo "uploadImage_aws();";else echo "uploadImage();";?>

                    };
                }
             }
             else
             {
                 alert("Photo only allows file types of PNG, JPG, JPEG. ");
             }

       }


    }
}   

Загрузить изображение

function uploadImage()

{

    $("#imageform").ajaxForm({target: '#preview', 

        beforeSubmit:function(){

            $("#imageloadstatus").show();

            $("#imageloadbutton").hide();

        }, 

        success:function(){

            $("#imageloadstatus").hide();

            $("#imageloadbutton").show();

        },

        error:function(){ 

            $("#imageloadstatus").hide();

            $("#imageloadbutton").show();

        }

    }).submit();

}

Покажите нам полную HTML-форму

Ende 05.06.2018 13:37

@Ende Я только что обновил свой вопрос, спасибо.

Davinder Singh 05.06.2018 13:40

что такое imageval();?

Frankich 05.06.2018 14:04

@MacBooc Я вставил полный код. ImageVal - это функция для проверки размеров изображений, тогда как она вызывает UploadIMage для отправки формы на сервер через ajax.

Davinder Singh 05.06.2018 14:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
1 082
1

Ответы 1

Вы должны проверить, существуют ли уже данные, и если не переименовать их.

if (file_exists($new_path)) {
$id = 1;
do {
    $new_path = $upload_folder.$filename.'_'.$id.'.'.$extension;
    $id++;
} while(file_exists($new_path));

}

Например

$new_path = $upload_folder.$filename.'.'.$extension;

Можете ли вы изучить мой код и помочь мне понять, почему $ _FILES ['photos'] ['name'] [$ i] такие же?

Davinder Singh 05.06.2018 13:42

Где у тебя этот [$ i]? - $ _FILES тоже объект, вы не можете ничего добавить, если хотите

Daniel 05.06.2018 13:48

Я пытаюсь загрузить несколько файлов.

Davinder Singh 05.06.2018 13:52

@DavinderSingh Это происходит, когда вы загружаете несколько файлов с одинаковым именем.

Douwe de Haan 05.06.2018 14:10

все файлы имели разные имена.

Davinder Singh 05.06.2018 14:11

Другие вопросы по теме