【问题标题】:Uploading multiple images to server and database using PHP and a single HTML input [duplicate]使用 PHP 和单个 HTML 输入将多个图像上传到服务器和数据库[重复]
【发布时间】:2023-03-13 07:00:01
【问题描述】:

有人可以帮忙吗,因为我想将多张图片上传到服务器,并将图片名称上传到数据库。

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

查看:

      <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);
      }
    }

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

【问题讨论】:

  • 你想要一个输入类型的文件在codeigniter中上传多张图片吗?
  • @KUMAR 谢谢你的回复。是的,我只想使用一个输入。对于多个图像。它适用于自定义 MVC 框架。
  • 好的,请稍等。
  • 现在请查看我的更新答案。
  • SO上有很多重复的,你试过吗?

标签: php html multiple-file-upload


【解决方案1】:

完整代码

<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);
 }
} 
?>

【讨论】:

  • 感谢您的代码。此代码适用于将图像上传到服务器。您能否建议我如何添加将图像名称上传到数据库的部分?
  • 使用插入查询
  • 谢谢。您能否建议我如何声明或分离当前存储在 $filename 变量中的不同图像或文件名?
【解决方案2】:

使用此输入代码 -

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

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

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

【讨论】:

  • 感谢您的回复。这适用于图像上传部分,但我不确定如何获取不同的图像名称以便将它们声明为变量,以便在数据库中的不同列中上传不同的图像名称。
猜你喜欢
  • 2016-05-07
  • 1970-01-01
  • 2016-05-29
  • 2014-10-27
  • 2016-03-30
  • 1970-01-01
  • 2015-01-01
  • 2018-02-06
  • 1970-01-01
相关资源
最近更新 更多