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()提供的参数无效"我不认为数组是空的,因为我使用files[]按钮为它提供了一个文件。

你的for循环有一个错误。你应该计算$_FILES['files']['name'],而不是$_FILES['files']['tmp_name']。请看下面的代码:

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

我想分享我的经验。对我来说,问题出在HTML表单元素上。

我最初将文件类型命名为"images"

<input type="file" name="images" class="form-control-file" multiple>

这将工作,如果我只处理一个图像。然而,由于我上传了多张图片,我不得不将其更改为"images[]"作为数组。

<input type="file" name="images[]" class="form-control-file" multiple>

相关内容

最新更新