2017-07-30 186 views
1

在我的代碼中,我爲該目錄創建了一個文件夾和子文件夾。所以當用戶發送文件時,我用他們的「userid_fullname」創建一個目錄,遍歷這些文件,並提交給全名文件夾。但是每次用戶提交文件時,第一個文件夾都會到達文件夾,其他文件會消失。我相信問題是這是我的「$ key」變量,因爲它控制着計數。這是我的代碼。PHP通過嵌套目錄循環

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> 
+0

什麼的'死(「好」);'呢?如果你可以移動文件不是你的代碼將退出。 (無論「文件沒有發送!」或「好」) –

+0

它只是爲了測試目的。 – Jagr

+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"); 

希望這有助於