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");
?>