PHP上传多个图像并将其插入数据库

时间:2016-02-10 23:45:57

标签: php

我想使用此代码上传多个图像,但我不能,我认为它将通过使用每个但每次我尝试错误来到处 我想在一列中插入整个图像路径,并在每张图片之后插入' 这是php代码

if (isset($_POST['upload_file'])) {
  $date = date('Y-m-d h:i:s');
  if ($_FILES['image']['name'] != '') {
    $temp = explode('.', $_FILES['image']['name']);
    $image_name = round(microtime(true)) . '.' . end($temp);
    $image_tmp = $_FILES['image']['tmp_name'];
    $image_size = $_FILES['image']['size'];
    $image_ext = pathinfo($image_name,PATHINFO_EXTENSION);
    $image_path = '../media/file/'.$image_name;
    $image_db_path = '../media/file/'.$image_name;
    if ($image_size < '50000000') {
      if ($image_ext == 'jpg' || $image_ext == 'png' || $image_ext =='gif' || $image_ext == 'jpeg') {
        if (move_uploaded_file($image_tmp, $image_path)) {
          $ins_sql = "INSERT INTO files (imgs_paths, date) VALUES ('$image_db_path', '$date')";
          if (mysqli_query($conn,$ins_sql)) {
              header('Location: index.php');
            }else{
              $error = '';
            }
          }else{
            $error = '';
          }
        }else{
        $error = '';
        }
    }else{
      $error = '';
    } 
  } else{
    $error = '';
  }
} 

这里是html代码

<input type="file" accept="image/*" name="image[]" multiple/>

1 个答案:

答案 0 :(得分:0)

您正确使用foreach。如果您需要上传多个,则需要使用它。它很简单:

foreach($_FILES['image'] as $i => $file){
    ///... other code
    $temp = explode('.', $_FILES['image'][$i]['name']);
    $image_name = round(microtime(true)) . '.' . end($temp);
    $image_tmp = $_FILES['image'][$i]['tmp_name'];
    $image_size = $_FILES['image'][$i]['size'];
    ///... rest of code
}

由于它是一组图像,因此您需要访问每个元素。请注意我们如何使用数组索引($i)来访问循环中的当前元素。

作为@RiggsFolly stated,您还可以在循环中使用$file,因为循环中的当前元素。 (而不是$_FILES['image'][$i]...