2016-08-29 38 views
0

我想通過PHP發佈圖像到我的網站文件目錄。這確切的代碼適用於該網站的其他頁面,但我有得到它的這個網頁上工作的問題:無效的參數給予foreach循環php

if(isset($_FILES['files'])){ 
     $errors= array(); 
     for($i=0;$i<count($_FILES['files']['tmp_name']); $i++){ 

      $file_name = $_FILES['files']['name'][$i]; 
      $file_size =$_FILES['files']['size'][$i]; 
      $file_tmp =$_FILES['files']['tmp_name'][$i]; 
      $file_type=$_FILES['files']['type'][$i]; 
      if($file_size > 2097152){ 
       $errorMessage2.="File size must be less than 2 MB"; 
      } 

      $img_dir="../images/property_directory"; 
      if(is_dir($img_dir)==false){ 
       mkdir("$img_dir", 0700, true); // Create directory if it does not exist 
      } 

      if(is_dir("$img_dir/".$file_name)==false){ 
       move_uploaded_file($file_tmp,"$img_dir/". $file_name); 
       $filePath[$i] = "$img_dir/" . $file_name; 
      }else{// rename the file if another one exist 
       $new_dir="$img_dir/".$file_name.time(); 
       rename($file_tmp,$new_dir) ; 
       $filePath[$i] = "$img_dir/" . $file_name.time();  
      } 
     } 
    } 

if(empty($errorMessage2)){ 
    $filePathArr = ""; 
    foreach ($filePath as $v) { 
     $filePathArr .= "$v "; 
    } 

foreach循環拋出一個錯誤,說「提供的foreach無效參數()」我不要以爲數組是空的,因爲我使用文件[]按鈕提供文件。

+0

爲什麼不驗證$ filePath包含一個好的ol時尚'var_dump($ filePath);'就在foreach之前? –

+0

@devlincarnate嗯,它似乎是「NULL」,這很奇怪 –

+0

你確定'$ _FILES ['files']'被設置?如果未設置,則不會進入第一個循環,因此您將永遠不會設置「$ filePath」。 if(isset($ _FILES ['files']))'if(empty($ errorMessage2))'應該在if內。 – Barmar

回答

0

你在循環中有一個錯誤。您應該計入$_FILES['files']['name']而不是$_FILES['files']['tmp_name']。請參閱下面的代碼:

for($i=0;$i<count($_FILES['files']['name']); $i++) { 
.... 
} 
+0

他爲何重要? '$ _FILES ['files']'中的所有條目長度應該相同。 – Barmar