存储上传到服务器上的图像路径

时间:2014-10-09 11:57:13

标签: php

我已成功将图像上传到服务器上名为propertyimages的文件夹中,但问题是我无法在数据库中保存上传图像的路径

表单的代码是:

<form action="admin_insert_property_images.php" method="post" enctype="multipart/form-data">
<label for="file">Upload images:</label>
<input type="file" name="file" id="file"><br>
<input type="submit" name="submit" value="Submit">
</form>

admin_insert_property_images.php的代码是:

    <?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("propertyimages/" . $_FILES["file"]["name"])) 
{
echo $_FILES["file"]["name"] . " already exists. ";
} 
else 
{

$imagepath = "propertyimages/" . $_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"], $imagepath);
$sql="INSERT INTO propertyimages(propertyimage) VALUES ('".$imagepath."')";
if (!mysqli_query($con,$sql)) 
{
die('Error: ' . mysqli_error($con));
}
}
}
} 
else    
{
echo "Invalid file";
}
mysqli_close($con);
?>

如果有人能告诉我如何存储图像的路径

,我将不胜感激

2 个答案:

答案 0 :(得分:0)

根据您的代码,似乎您没有运行查询,您应该运行查询:

$sql="INSERT INTO propertyimages(propertyimage) VALUES ('$imagepath')";
$mysqli->query($sql);

查看更多详情:http://php.net/manual/en/mysqli.query.php

答案 1 :(得分:0)

您上传到的$ imagePath变量似乎没有指定相同的路径。 此外,代码不会显示您执行查询。

更改代码的else部分:

 else {
      $imagepath = "propertyimages/" . $_FILES["file"]["name"];
      move_uploaded_file($_FILES["file"]["tmp_name"], $imagepath);

      $sql="INSERT INTO propertyimages(propertyimage) VALUES ('".$imagepath."')";
      $mysqli->query($sql);

    }

或类似取决于您使用的是mysql还是mysqli。

在使用它作为生产代码之前,我强烈建议阅读mysql转义/更好的验证上传文件的方法实际上是图像(如果有人倾向于类型很容易伪造) - 更好地使用像GD这样的东西处理上传的图像并检查它是否可以作为图像处理/保存,以确保您不允许上传任何恶意内容。

一些建议的帖子:Properly Escaping with MySQLI | query over prepared statements

PHP image upload security check list