gpt4 book ai didi

php - 在服务器上上传多张图片

转载 作者:行者123 更新时间:2023-11-29 23:38:28 25 4
gpt4 key购买 nike

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

<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";
}

?>

任何人都可以纠正错误并帮助我

最佳答案

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

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);
}

注意这是来自多 uoploader 的示例代码,如您在这一行中看到的:if(!is_array($_FILES["myfile"]["name"]))

验证 $_file 是否为数组。如果它是一个数组这是将图像上传到服务器的循环:

for($i=0; $i < $fileCount; $i++)
{
$fileName = $_FILES["myfile"]["name"][$i];
move_uploaded_file($_FILES["myfile"]["tmp_name"][$i],$output_dir.$fileName);
$ret[]= $fileName;
}

正如您所看到的,此示例中没有任何 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";
}

?>

关于php - 在服务器上上传多张图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26300066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com