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

Posted

技术标签:

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

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

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

查看:

      <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上有很多重复的,你试过吗? 【参考方案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

【讨论】:

感谢您的回复。这适用于图像上传部分,但我不确定如何获取不同的图像名称以便将它们声明为变量,以便在数据库中的不同列中上传不同的图像名称。

以上是关于使用 PHP 和单个 HTML 输入将多个图像上传到服务器和数据库[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 上传多个图像,并将条目提交到 mysql

在单个 PHP 中使用 AFNetworking 2.0 上传图像和信息(两者)

Android 允许将多个文件(最大 150 MB)上传到 PHP 服务器

Phonegap:在单个请求中上传多个图像

使用 php 将多个复选框值和输入插入单个 sql 数据库

使用 While 循环内的多个输入元素和 While 循环外的单个提交按钮更新 MySQL 数据库