Несколько загрузок файлов php для цикла - PullRequest
0 голосов
/ 10 июня 2018

Я работаю над сценарием, который должен загружать несколько файлов.У меня есть эта html структура

HTML

<form method="POST" action="" enctype="multipart/form-data">
<input type="file" name="test[]" multiple="multiple">
<button type="submit">Test upload</button>
</form>

И это сценарий класса загрузки php, который я написал.

PHP

<?php 

class Uploader{

public function upload($files){ 

        $this->files = count($files['name']);

        try{

                for($i = 0; $i < $this->files; $i++){

                    $this->error = $files['error'][$i];
                    $this->tmp_name = $files['tmp_name'][$i];
                    $this->name = basename($files['name'][$i]);
                    $this->size = $files['size'][$i];

                    if($this->error == UPLOAD_ERR_OK){

                        if(is_uploaded_file($this->tmp_name)){

                            move_uploaded_file($this->tmp_name, "$this->path/$this->name");

                        return 'ok';

                    } else {

                        throw new Exception('Error tmp file');

                    } 

                } else {

                throw new Exception('Error');

                }
            }

    }
    catch(Exception $e){

            return $e->getMessage();

    }
}

}
?>

В прошлом я использовал цикл for(), чтобы без проблем выполнить несколько задач загрузки, но теперь он будет загружать только один файл.Я также искал здесь на stackoverflow, и есть некоторые люди, которые не рекомендуют использовать цикл foreach() для загрузки нескольких файлов.Кто-нибудь может предложить мне решение этой проблемы?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Если вызывается из функции, оператор return немедленно завершает выполнение текущей функции и возвращает ее аргумент в качестве значения вызова функции.

Вот отличный скрипт, который я нашел для загрузки нескольких файлов через PHP.

0 голосов
/ 10 июня 2018

вы звоните return 'ok'; после move_uploaded_file, что прерывает цикл for после загрузки первого файла ... просто удалите эту строку, и все должно быть в порядке ..

...