PHP循环遍历嵌套目录

时间:2017-07-30 03:20:31

标签: php file directory

在我的代码中,我为该目录创建了一个文件夹和子文件夹。因此,当用户发送文件时,我使用" userid_fullname"创建一个目录,循环遍历文件,然后提交到fullname文件夹。但每次用户提交文件时,第一个文件将转到该文件夹​​,其他文件将消失。我认为这个问题是我的" $ key"变量,因为它控制计数。这是我的代码。

PHP

<?php

if($_SERVER['REQUEST_METHOD'] =="POST"){
    $currentDirectory = getcwd();

    $userid = "8503";
    $fullname = "peopl39e";    


    foreach($_FILES['file']['tmp_name'] as $key => $error){

        $file_tmp = file_get_contents($_FILES['file']['tmp_name'][$key]);
         //keep only A-Z and 0-9 and everything else KILL
        $file_name = preg_replace("/[^a-z0-9\.]/", "_", strtolower($_FILES['file']['name'][$key]));
        $file_name = strtotime("now")."_".$file_name;

        $dir = "devPacks/" .$userid."_".$fullname;
        if(is_dir($dir)==false){

                mkdir($dir, 0777);
            }
        if(!move_uploaded_file($_FILES['file']['tmp_name'][$key],$dir.'/'.$file_name)){

                die("File didn't send!");

    }else{


            die("GOOD");
        }
}
}

?>

<form method="post" enctype="multipart/form-data" autocomplete="off">
    <br>
    Select Pack Screenshots/Video: <input type="file" name="file[]" multiple>
<br></br>
    <input type="submit" name="submit">
</form>

1 个答案:

答案 0 :(得分:1)

在循环运行一次后,代码的以下部分将停止执行:

 if(!move_uploaded_file($_FILES['file']['tmp_name'][$key],$dir.'/'.$file_name)){

            die("File didn't send!");

}else{


        die("GOOD");
    }
}

如果我理解正确,您添加了die("GOOD");行,以便在提交一次后不会看到该表单。您可以执行以下操作来实现此目的:

$uploadCount = 0;
if(!move_uploaded_file($_FILES['file']['tmp_name'][$key],$dir.'/'.$file_name)){
$uploadCount++;
}
die("$uploadCount file(s) uploaded");

希望这有帮助