多个文件上传php for循环

时间:2018-06-10 08:33:18

标签: php file-upload upload

我正在处理一个应该上传多个文件的脚本。 我有这个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 :(得分:0)

你在return 'ok';之后调用move_uploaded_file,在第一个文件上传后打破for循环..只需删除该行,它应该没问题。

答案 1 :(得分:0)

如果从函数内部调用,则return语句立即结束当前函数的执行,并返回其自变量作为函数调用的值。

Here's一个很棒的脚本,我发现它可以通过PHP上传多个文件。