当前位置: 首页 > 知识库问答 >
问题:

如何在php中一次移动已上载的多个图像

朱翔
2023-03-14

我正在尝试上载3个图像字段,将它们存储在我的数据库中,并将上载的文件移动到文件夹中。

目前,“image1”、“image2”、“image3”、“image4”字段正在插入MySQL数据库,但只有“image1”正在上载并移动到我的文件夹中。

这是我的密码:

if(isset($_POST['submit'])){
  $pro_image1 = $_FILES['image1']['name'];
  $pro_image2 = $_FILES['image2']['name'];
  $pro_image3 = $_FILES['image3']['name'];
  $pro_image4 = $_FILES['image4']['name'];
  $tmp_name   = $_FILES['image1']['tmp_name'];
  $tmp2_name  = $_FILES['image2']['tmp_name'];
  $tmp3_name  = $_FILES['image3']['tmp_name'];
  $tmp4_name  = $_FILES['image4']['tmp_name'];

  $pro_query = "INSERT INTO product(image1,image2,image3,image4) VALUES('$pro_image1','$pro_image2','$pro_image3','$pro_image4')";

  if(mysqli_query($con,$pro_query)){
    $msg = "<p class='pull-right' style='color:green;'> Product Added successfully</p>";
    $path = "images/$pro_image1";

    if(move_uploaded_file($tmp_name, $path)) {
      copy($path, "../$path");
    }

    if(move_uploaded_file($tmp2_name, $path)) {
      copy($path, "../$path");
    }

    if(move_uploaded_file($tmp3_name, $path)) {
      copy($path, "../$path");
    }

    if(move_uploaded_file($tmp4_name, $path)) {
      copy($path, "../$path");
    } elseif(!mysqli_query($con,$pro_query)) {
      $insert_error = "<p class='pull-right' style='color:red;>Product didn't added</p>";
    }
  }
}

<form action="" method="post" enctype="multipart/form-data"  class="form-font">
  <div class="col-md-6">
    <div class="form-group">
      <label>Image1</label>
      <input type="file" name="image1" class="form-control" required>
    </div>
    <div class="form-group">
      <label>Image2</label>
      <input type="file" name="image2" class="form-control" required>
    </div>
    <div class="form-group">
      <label>Image3</label>
      <input type="file" name="image3" class="form-control" required>
    </div>
    <div class="form-group">
      <label>Image4</label>
      <input type="file" name="image4" class="form-control" required>
    </div>
    <center>
      <input type='submit' name='submit' class='btn btn-success' value='Add Product'>
    </center>
  </div>
</form>

如何移动文件夹中的其他图像(“image2”、“image3”、“image4”)?
我在代码中犯了什么错误?你能解释一下我哪里做错了吗?

共有3个答案

诸葛雨泽
2023-03-14

您只为image1定义了var$path——您需要在函数move\u upload\u file and copy的每个“if”块中更改此var。目前,对于所有图像,您仅使用image1的路径和文件名。

谢选
2023-03-14

请覆盖您的$path变量,然后它将上传属性...

在if条件更改$path变量之前,如下面所示,或将变量更改为$path1、$path2、$path3。。

$path = "images/$pro_image1";
$path = "images/$pro_image2";
$path = "images/$pro_image3";

-

        if(isset($_POST['submit'])){
   $pro_image1 = $_FILES['image1']['name'];
        $pro_image2 = $_FILES['image2']['name'];
        $pro_image3 = $_FILES['image3']['name'];
        $pro_image4 = $_FILES['image4']['name'];
        $tmp_name = $_FILES['image1']['tmp_name'];
        $tmp2_name = $_FILES['image2']['tmp_name'];
        $tmp3_name = $_FILES['image3']['tmp_name'];
        $tmp4_name = $_FILES['image4']['tmp_name'];
$pro_query = "INSERT INTO product(image1,image2,image3,image4) VALUES('$pro_image1','$pro_image2','$pro_image3','$pro_image4')";
        if(mysqli_query($con,$pro_query)){
            $msg = "<p class='pull-right' style='color:green;'> Product Added successfully</p>";
            $path = "images/$pro_image1";
            if(move_uploaded_file($tmp_name, $path)){
                 copy($path, "../$path");
               }
               $path = "images/$pro_image2";
               if(move_uploaded_file($tmp2_name, $path)){
                 copy($path, "../$path");
               }
               $path = "images/$pro_image3";
               if(move_uploaded_file($tmp3_name, $path)){
                 copy($path, "../$path");
               }
               $path = "images/$pro_image4";
               if(move_uploaded_file($tmp4_name, $path)){
                 copy($path, "../$path");
               }
               elseif(!mysqli_query($con,$pro_query)){
            $insert_error = "<p class='pull-right' style='color:red;>Product didn't added</p>";
        }
    }
}

<form action="" method="post" enctype="multipart/form-data"  class="form-font">
    <div class="col-md-6">
       <div class="form-group">
                <label>Image1</label>
                <input type="file" name="image1" class="form-control" required>
                </div>
                <div class="form-group">
                <label>Image2</label>
                <input type="file" name="image2" class="form-control" required>
                </div>
                <div class="form-group">
                <label>Image3</label>
                <input type="file" name="image3" class="form-control" required>
                </div>
                <div class="form-group">
                <label>Image4</label>
                <input type="file" name="image4" class="form-control" required>
                </div>
<center><input type='submit' name='submit' class='btn btn-success' value='Add Product'></center>
            </form>
东郭弘方
2023-03-14

以下是您需要做的:

if(move_uploaded_file($tmp_name, $path)){
             copy($path, "images/$pro_image2");
           }
           if(move_uploaded_file($tmp2_name, $path)){
             copy($path, "images/$pro_image3");
           }if(move_uploaded_file($tmp3_name, $path)){
             copy($path, "images/$pro_image4");
           }if(move_uploaded_file($tmp4_name, $path)){
             //copy($path, "images/$path");
           }
 类似资料:
  • 很抱歉最近问了这么多问题。我刚刚开始进入pyplay。关于我之前的问题,我认为我没有把它用在我想做的事情上。 这是我做的一张快速图片来演示 这是我想让玩家移动的单一背景图像或地图。红色的X只是角色的开始。我试着让它当我移动玩家时,背景也会跟随,就像玩家在地图上移动一样。我已经限制了玩家不能离开实际屏幕的边界。只是有一点麻烦,现在试图让它这样的单一图像将沿着玩家移动,如果玩家到达地图图片移动停止。我

  • 我使用以下代码移动图像一个文件夹到另一个文件夹,但它不工作。 如下 但还是不行谢谢

  • 我想在一个POST请求中上传多个图像。目前,我的请求中与文件上传相关的部分正在获取一个文件,如下所示: 这很好用。现在,我尝试更改解码为,并对所有文件执行循环 尝试使用Postman中的参数上传图像时,出现以下错误: 不支持嵌套表单数据解码。 如何解决此问题?

  • 我想通过传递一个网址来加载多个图像。与本教程不同http://www.learn2crack.com/2014/06/android-load-image-from-internet.html其中只有一个图像被下载并使用img.setImageBitmap(图像)查看;我的问题是如何将url发送到一个方法以加载该url的图像,该方法返回一个图像,然后我在图像视图中显示它。

  • 问题内容: 我试图在数据库表的一行中上传多个图像并在显示页面中访问它们。我已经尝试过本教程: laraveldaily.com/upload-multiple- files-laravel-5-4/, 但是有两个不同的表建立关系。 我希望这在单个表中发生。 问题答案: 这是最适合我的: 首先以您的形式执行此操作: 这是多项选择: 现在在您的控制器中执行以下操作: 希望这行得通

  • 我对Flyway完全陌生,但我正在尝试使用https://github.com/flyway/flyway-docker描述的docker-compose flyway mysql安排来迁移许多相同的测试数据库 据我所知,< code>migrate命令可以在它的< code>-schemas参数中接受多个模式,但是它似乎只将实际的SQL迁移应用于列表中的第一个模式。 例如,当我使用< code>