使用 PHP 和单个 HTML 输入将多个图像上传到服务器和数据库

问题描述

有人可以提供帮助,因为我想将多个图像上传到服务器以及图像名称数据库

以下代码用于将图像上传到服务器:

查看:

      <form action="<?PHP echo URLROOT; ?>/posts/add" method="post" enctype='multipart/form-data'>
        <input type="file" name="file[]" multiple>
        <input type="submit" name=submit value="Submit">
      </form>

控制器:

  
        if($_SERVER['REQUEST_METHOD'] == 'POST'){
 
          // Count total files
          $countfiles = count($_FILES['file']['name']);
          
          // Looping all files
          for($i=0;$i<$countfiles;$i++){
            $filename = $_FILES['file']['name'][$i];
            
            // Upload file
            move_uploaded_file($_FILES['file']['tmp_name'][$i],dirname(__DIR__)."/img/".$filename);
             
          }
              } else {
          // Load view with errors
          $this->view('posts/add');
        }

      }

使用以下代码和 3 个单独的输入时,我还可以上传 3 个图像名称

查看:

    <form action="<?PHP echo URLROOT; ?>/posts/add" method="post">
        <input type="file" name="image1">
        <input type="file" name="image2">
        <input type="file" name="image3">
        <input type="submit" name=submit value="Submit">
      </form>

控制器:

      if($_SERVER['REQUEST_METHOD'] == 'POST'){
        // Sanitize POST array
        $_POST = filter_input_array(INPUT_POST,FILTER_SANITIZE_STRING);

        $data = [
          'user_id' => $_SESSION['user_id'],'image1' => trim($_POST['image1']),'image2' => trim($_POST['image2']),'image3' => trim($_POST['image3']),];

    
        // Validated
          if($this->postModel->addPost($data)){
            flash('post_message','Post Added');
            redirect('posts');
          } else {
            die('Something went wrong');
          }      

      } else {
  
        $data = [
           'image1' => '','image2' => '','image3' => ''
          ];
  
        $this->view('posts/add',$data);
      }
    }

有人可以建议我如何组合代码,以便使用单个文件输入将图像上传到服务器,以及将图像名称上传数据库吗?

解决方法

完整代码

<form method='post' action='' enctype='multipart/form-data'>
  <input type="file" name="file[]" id="file" multiple>
 <input type='submit' name='submit'  value='Upload'>
</form>

PHP

<?php 
if(isset($_POST['submit'])){
       
      $imageName =$_FILES['file']['name'];
 
     // Count total files
 $countfiles = count($_FILES['file']['name']);
 
 // Looping all files
 for($i=0;$i<$countfiles;$i++){
   $filename = $_FILES['file']['name'][$i];
   
   // Upload file
   move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);

    //insert code 

 $query = "insert into images(images) values('".$imageName."')";
 mysqli_query($con,$query);
 }
} 
?>
,

使用此输入代码 -

<input type="file" name="image[]" id="file" multiple>

并在php文件中计数文件,然后使用循环来迭代文件,例如-

$counts = count($_FILES['image']['name']);
for($i=0;$i<$counts;$i++){
//uploading code here
}