Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在服务器上上载多个图像_Php_Mysql_Sql_Mysqli - Fatal编程技术网

Php 在服务器上上载多个图像

Php 在服务器上上载多个图像,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我试图编写一个有助于上传图像的表单,在对这个站点进行了一些研究之后,我得到了这个脚本,但是它只上传了一个图像,而我希望在服务器文件夹中上传多个图像,并将它们的路径存储在数据库表中 <form action="insertimages.php" method="post" enctype="multipart/form-data"> <div class="form-group"> <label class="col-md-3 control-label">Up

我试图编写一个有助于上传图像的表单,在对这个站点进行了一些研究之后,我得到了这个脚本,但是它只上传了一个图像,而我希望在服务器文件夹中上传多个图像,并将它们的路径存储在数据库表中

<form action="insertimages.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<label class="col-md-3 control-label">Upload Image:</label>
<div class="col-md-8">
<input class="form-control" name="file" id="file" value="" type="file" multiple required>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label"></label>
<div class="submit">
<input class="btn btn-primary" value="Save " type="submit" name="submit">
</div>  
</div>
</form>

上载图像:
insertimages.php页面的代码为

$con=mysqli_connect("localhost","root","","db");
// Check connection
if (mysqli_connect_errno()) 
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 2000000)
&& in_array($extension, $allowedExts))  
    {
        if ($_FILES["file"]["error"] > 0) 
            {
                echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
            } 
        else 
            {
                if (file_exists("images/" . $_FILES["file"]["name"])) 
                    {
                        echo $_FILES["file"]["name"] . " already exists. ";
                    } 
                else 
                    {

                        $imagepath = "images/" . $_FILES["file"]["name"];
                        move_uploaded_file($_FILES["file"]["tmp_name"], $imagepath);
                        $sql="INSERT INTO images(image,studentid) VALUES ('".$imagepath."','".$_SESSION['insert_id']."')";
                        if (!mysqli_query($con,$sql)) 
                            {
                                die('Error: ' . mysqli_error($con));
                            }
                    }
            }
            header("Location: index.php");
    } 
else    
    {
        echo "Invalid file";
    }

?>
$con=mysqli_connect(“localhost”、“root”、“db”);
//检查连接
if(mysqli\u connect\u errno())
{
echo“未能连接到MySQL:”.mysqli_connect_error();
}
$allowedExts=数组(“gif”、“jpeg”、“jpg”、“png”);
$temp=explode(“.”,$_文件[“文件”][“名称”]);
$extension=end($temp);
如果(($_文件[“文件”][“类型”]=“图像/gif”)
||($_文件[“文件”][“类型”]=“图像/jpeg”)
||($_文件[“文件”][“类型”]=“图像/jpg”)
||($_文件[“文件”][“类型”]=“图像/pjpeg”)
||($_文件[“文件”][“类型”]=“图像/x-png”)
||($_文件[“文件”][“类型”]=“图像/png”))
&&($_文件[“文件”][“大小”]<2000000)
&&in_数组($extension$allowedExts))
{
如果($\u文件[“文件”][“错误”]>0)
{
回显“返回代码:”.$\u文件[“文件”][“错误”]。
”; } 其他的 { 如果(文件存在(“图像/”$\u文件[“文件”][“名称”])) { echo$\u文件[“文件”][“名称”]。“已存在。”; } 其他的 { $imagepath=“images/”$\u文件[“文件”][“名称”]; 移动上传的文件($文件[“文件”][“tmp文件名”],$imagepath); $sql=“插入到图像(图像,studentid)值(“$imagepath.”,“$\u会话['INSERT\u id']”); 如果(!mysqli_query($con,$sql)) { die('Error:'.mysqli_Error($con)); } } } 标题(“Location:index.php”); } 其他的 { 回显“无效文件”; } ?>

有人能纠正错误并帮助我吗

您只有一个映像,因为您在服务器中只插入了一个映像,您需要像这样循环文件:

if(isset($_FILES["myfile"]))
{

    $ret = array();

    $error =$_FILES["myfile"]["error"];
    //You need to handle  both cases
    //If Any browser does not support serializing of multiple files using FormData() 
    if(!is_array($_FILES["myfile"]["name"])) //single file
    {
        $fileName = $_FILES["myfile"]["name"];
        move_uploaded_file($_FILES["myfile"]["tmp_name"],$output_dir.$fileName);
        $ret[]= $fileName;
    }
    else  //Multiple files, file[]
    {
      $fileCount = count($_FILES["myfile"]["name"]);
      for($i=0; $i < $fileCount; $i++)
      {
        $fileName = $_FILES["myfile"]["name"][$i];
        move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName);
        $ret[]= $fileName;
      }

    }
    echo json_encode($ret);
 }
正如您所看到的,这个示例中没有任何msql插入,所以不要忘记将您自己的代码调整到这个示例中。您的代码应该如下所示:

<?php
$con=mysqli_connect("localhost","root","","db");
    // Check connection
    if (mysqli_connect_errno()) 
        {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
    //Replace $mysqli with your $con then. $con->query($sql);   
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);

    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/pjpeg")
    || ($_FILES["file"]["type"] == "image/x-png")
    || ($_FILES["file"]["type"] == "image/png"))
    && ($_FILES["file"]["size"] < 2000000)
    && in_array($extension, $allowedExts))  
        {
            if ($_FILES["file"]["error"] > 0) 
                {
                    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
                } 
            else 
                {
                    if (file_exists("images/" . $_FILES["file"]["name"])) 
                        {
                            echo $_FILES["file"]["name"] . " already exists. ";
                        } 
                    else 
                        {
                           if(!is_array($_FILES["file"]["name"])) //single file
                           {
                                $imagepath = "images/" . $_FILES["file"]["name"];
                                move_uploaded_file($_FILES["file"]["tmp_name"], $imagepath);
                                $sql="INSERT INTO images(image,studentid) VALUES ('".$imagepath."','".$_SESSION['insert_id']."')";
                                if (!mysqli_query($con,$sql)) 
                                    {
                                        die('Error: ' . mysqli_error($con));
                                    }
                            }else  //Multiple files, file[]
                            {
                              $fileCount = count($_FILES["file"]["name"]);
                              for($i=0; $i < $fileCount; $i++)
                              {
                                $fileName = $_FILES["file"]["name"][$i];
                                move_uploaded_file($_FILES["file"]["tmp_name"][$i],$imagepath);
                                $ret[]= $fileName;
                                $sql="INSERT INTO images(image,studentid) VALUES ('".$imagepath."','".$_SESSION['insert_id']."')";
                                    if (!mysqli_query($con,$sql)) 
                                    {
                                        die('Error: ' . mysqli_error($con));
                                    }
                              }

                            }

                            }
                        }
                }
                header("Location: index.php");
        } 
    else    
        {
            echo "Invalid file";
        }

    ?>

您正在使用的代码需要进行许多更改,因为还有一些不必要的代码。您需要循环在服务器上上载所有图像,并在数据库上插入图像。我对你的剧本做了一些改进

index.php

上载图像:
insertimages.php
我收到此错误:为foreach()提供的参数无效如果传入
If(!is_数组($\u FILES[“file”][“name”])
processus或else processus,它仍然只上载单个图像跟踪?
<?php
$con=mysqli_connect("localhost","root","","db");
    // Check connection
    if (mysqli_connect_errno()) 
        {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }
    //Replace $mysqli with your $con then. $con->query($sql);   
    $allowedExts = array("gif", "jpeg", "jpg", "png");
    $temp = explode(".", $_FILES["file"]["name"]);
    $extension = end($temp);

    if ((($_FILES["file"]["type"] == "image/gif")
    || ($_FILES["file"]["type"] == "image/jpeg")
    || ($_FILES["file"]["type"] == "image/jpg")
    || ($_FILES["file"]["type"] == "image/pjpeg")
    || ($_FILES["file"]["type"] == "image/x-png")
    || ($_FILES["file"]["type"] == "image/png"))
    && ($_FILES["file"]["size"] < 2000000)
    && in_array($extension, $allowedExts))  
        {
            if ($_FILES["file"]["error"] > 0) 
                {
                    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
                } 
            else 
                {
                    if (file_exists("images/" . $_FILES["file"]["name"])) 
                        {
                            echo $_FILES["file"]["name"] . " already exists. ";
                        } 
                    else 
                        {
                           if(!is_array($_FILES["file"]["name"])) //single file
                           {
                                $imagepath = "images/" . $_FILES["file"]["name"];
                                move_uploaded_file($_FILES["file"]["tmp_name"], $imagepath);
                                $sql="INSERT INTO images(image,studentid) VALUES ('".$imagepath."','".$_SESSION['insert_id']."')";
                                if (!mysqli_query($con,$sql)) 
                                    {
                                        die('Error: ' . mysqli_error($con));
                                    }
                            }else  //Multiple files, file[]
                            {
                              $fileCount = count($_FILES["file"]["name"]);
                              for($i=0; $i < $fileCount; $i++)
                              {
                                $fileName = $_FILES["file"]["name"][$i];
                                move_uploaded_file($_FILES["file"]["tmp_name"][$i],$imagepath);
                                $ret[]= $fileName;
                                $sql="INSERT INTO images(image,studentid) VALUES ('".$imagepath."','".$_SESSION['insert_id']."')";
                                    if (!mysqli_query($con,$sql)) 
                                    {
                                        die('Error: ' . mysqli_error($con));
                                    }
                              }

                            }

                            }
                        }
                }
                header("Location: index.php");
        } 
    else    
        {
            echo "Invalid file";
        }

    ?>
<form action="insertimages.php" method="post" enctype="multipart/form-data">
<div class="form-group">
<label class="col-md-3 control-label">Upload Image:</label>
<div class="col-md-8">
<input type="file" name="file[]" multiple/>
</div>
</div>
<div class="form-group">
<label class="col-md-3 control-label"></label>
<div class="submit">
<input class="btn btn-primary" value="Save " type="submit" name="submit">
</div>  
</div>
</form>
<?php
$con=mysqli_connect("localhost","root","mysqldba","stackoverflow");
// Check connection
if (mysqli_connect_errno()) 
    {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
//Replace $mysqli with your $con then. $con->query($sql);   

foreach($_FILES['file']['tmp_name'] as $key => $tmp_name ){
$file_name = $key.$_FILES['file']['name'][$key];
$file_type=$_FILES['file']['type'][$key];   
if (
($file_type !== "image/gif")
|| ($file_type !== "image/jpeg")
|| ($file_type !== "image/jpg")
|| ($file_type !== "image/pjpeg")
|| ($file_type !== "image/x-png")
|| ($file_type !== "image/png"))
 {        
                if (file_exists("images/" . $file_name)) 
                    {
                        echo $file_name . " already exists. "; exit;
                    } 
                else 
                    {

                        $imagepath = "images/" . $file_name;
                        move_uploaded_file($_FILES["file"]["tmp_name"][$key], $imagepath);
                        $sql="INSERT INTO images(image,studentid) VALUES ('".$imagepath."','".$_SESSION['insert_id']."')";
                        if (!mysqli_query($con,$sql)) 
                            {
                                die('Error: ' . mysqli_error($con));
                            }
                    }           
    } 
else    
    {
        echo "Invalid file"; exit;
    }
}


header("Location: index.php");


?>