javascript - 将图像上传为数组

标签 javascript php jquery sql image-uploading

我正在尝试将多张图片上传到一个文件夹并且工作正常。当我尝试将图像名称存储在数据库中时遇到问题。如果我只上传一个就可以了。如果我上传不止一个,我的数据库中只会得到一个名字。

上传到我的数据库的方式是什么,制作一个带有图像标题的数组?

代码如下:

<div id="maindiv">
<div id="formdiv">
    <h4>Upload Image for </h4>
    <form enctype="multipart/form-data" action="" method="post">
        <p class="alert alert-info">Only JPEG,PNG,JPG Type Image Uploaded. Image Size Should Be Less Than 100KB.</p>
        <hr/>
        <div id="filediv"><input name="file[]" type="file" id="file"/></div><br/>
        <input type="button" id="add_more" class="upload" value="Add More Files"/>
        <input type="submit" value="Upload File" name="add_images" id="upload" class="upload"/>
    </form>
</div>

这是我的 php:

if (isset($_POST['add_images'])) {
$j = 0; 
$target_path = "images/";
for ($i = 0; $i < count($_FILES['file']['name']); $i++) {
    $validextensions = array("jpeg", "jpg", "png");  
    $ext = explode('.', basename($_FILES['file']['name'][$i]));//store extensions in the variable
    $name_of_img = basename($_FILES['file']['name'][$i]);
    $target_path = $target_path . $name_of_img;
    $j = $j + 1;
      if (($_FILES["file"]["size"][$i] < 1000000) 
            && in_array($file_extension, $validextensions)) {
        if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {
            echo $j. ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>';
            print_r($name_of_img);
            $query = "UPDATE post SET ";   
            $query .= "images = '{$name_of_imgs}' ";
            $query .= "WHERE post_id = {$the_post_id}";    
            $update_cruise_img = sqlsrv_query($con, $query);  
        } else {
            echo $j. ').<span id="error">please try again!.</span><br/><br/>';
        }
    } else {//if file size and file type was incorrect.
        echo $j. ').<span id="error">Wrong file Size or Type</span><br/><br/>';
    }
}
 }

我尝试创建这样的数组 $name_of_imgs = json_encode($_POST['file']); 但不工作

最佳答案

您需要在 for 循环之外更新 post 表。

if (isset($_POST['add_images'])) {
  $j = 0; 
  $name_of_imgs = [];

  for ($i = 0; $i < count($_FILES['file']['name']); $i++) {
      $validextensions = array("jpeg", "jpg", "png");  
      $ext = explode('.', basename($_FILES['file']['name'][$i]));//store extensions in the variable
      $name_of_img = basename($_FILES['file']['name'][$i]);

      // define target path here so that it won't concat the last value 
      $target_path = "images/" . $name_of_img;

      $j = $j + 1;
      if (($_FILES["file"]["size"][$i] < 1000000) && in_array($file_extension, $validextensions)) {
          if (move_uploaded_file($_FILES['file']['tmp_name'][$i], $target_path)) {
             echo $j. ').<span id="noerror">Image uploaded successfully!.</span><br/><br/>';

             $name_of_imgs[] = $name_of_img;
          } else {
              echo $j. ').<span id="error">please try again!.</span><br/><br/>';
          }
      } else {//if file size and file type was incorrect.
          echo $j. ').<span id="error">Wrong file Size or Type</span><br/><br/>';
      }
  }

  // update here
  $query = "UPDATE post SET ";   
  $query .= "images = '" . implode(',', $name_of_imgs) . "' ";
  $query .= "WHERE post_id = {$the_post_id}";    
  $update_cruise_img = sqlsrv_query($con, $query);  

}

您可以考虑为图像创建另一个表。

关于javascript - 将图像上传为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45671388/

相关文章:

javascript - 单击时,该类已添加,但单击另一个时,添加的相同类不会被删除

javascript - 如何在用户单击选项时隐藏子菜单,但在用户将鼠标悬停在菜单上时仍显示

javascript - 自动完成功能无法正常工作

php - 如何在没有特殊字段的情况下在 Symfony 中加载实体

php - 如何将xml doc作为字节数组发送到soap服务?

javascript - 如何创建处理复选框选择的单个函数?

c# - MVC Controller 方法参数始终为空

javascript - Angular Post 数组导致数据库中全部为 NULL

php - 如何处理不同时区的 MYSQL NOW()?

jquery - 当我点击 div 之外的任意位置时,如何使 div 关闭?