为了账号安全,请及时绑定邮箱和手机立即绑定

循环文件数组未上传所有文件

循环文件数组未上传所有文件

PHP
慕尼黑8549860 2021-11-13 18:57:05
    我试图根据用户上传的内容上传 1 - x 数量的文件。最近,我创建了一个 for 循环来遍历文件。我所看到的只是第一个文件上传。有谁知道为什么只有第一个文件会上传?class fileUpload{    public function __construct()    {}    public function upload() {        $file_count = count($_FILES['uploadedFile']['name']);        //$file_count = count($_FILES($file_post['name']));        for ($i = 0; $i<$file_count; $i++) {//          echo $file['uploadedFile']['name'][$index] . "\n";            $target_dir = "uploads/";            $target_file = $target_dir . basename($_FILES["uploadedFile"]["name"][$i]);            $uploadOk = 1;            $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));                    // Check if $uploadOk is set to 0 by an error            if ($uploadOk == 0) {                return 0;    // if everything is ok, try to upload file            } else {                if (move_uploaded_file($_FILES["uploadedFile"]["tmp_name"][$i], $target_file)) {                    return basename($_FILES["uploadedFile"]["name"][$i]);                } else {                    return 0;                }            }        }    }}表单输入:<input type="file" name="uploadedFile[]" class="inputfile" id="uploadedFileTest" data-multiple-caption="{count} files selected" multiple>
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

那是因为您使用return,return将使您退出该功能,并且您只会获得上传的第一个项目。


一个简单的解决方法是:


if (!move_uploaded_file($_FILES["uploadedFile"]["tmp_name"][$i], $target_file)) {

    return 0;

}

//更新2个解决方案的建议


public function upload() {


        $file_count = count($_FILES['uploadedFile']['name']);

        //$file_count = count($_FILES($file_post['name']));

            // add a array to save the basename on each loop

            $results = [];

        for ($i = 0; $i<$file_count; $i++) {

//          echo $file['uploadedFile']['name'][$index] . "\n";


            $target_dir = "uploads/";

            $target_file = $target_dir . basename($_FILES["uploadedFile"]["name"][$i]);

            $uploadOk = 1;

            $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));        


            // Check if $uploadOk is set to 0 by an error

            if ($uploadOk == 0) {

                return 0;

    // if everything is ok, try to upload file

            } else {

                if (move_uploaded_file($_FILES["uploadedFile"]["tmp_name"][$i], $target_file)) {

                    $results[] = basename($_FILES["uploadedFile"]["name"][$i]);

                } else {

                    return 0;

                }

            }

        }

        //return all basename in one shot

        return $results;


    }


查看完整回答
反对 回复 2021-11-13
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信