从服务器文件夹删除图像

时间:2018-02-15 10:07:54

标签: php html mysql

以下是在我的localhost / file / img文件夹中上传图片以及在我的表格中插入图片路径和名称的代码。

<?php

if (isset($_POST['submit']))
  {
  $file_id = $_POST['file_id'];
  if (count($_FILES['upload']['name']) > 0)
    {
    for ($i = 0; $i < count($_FILES['upload']['name']); $i++)
      {
      $tmpFilePath = $_FILES['upload']['tmp_name'][$i];
      if ($tmpFilePath != "")
        {
        $shortname = $_FILES['upload']['name'][$i];
        $filePath = "img/" . $_FILES['upload']['name'][$i];
        if (move_uploaded_file($tmpFilePath, $filePath))
          {
          $files[] = $shortname;
          $query = "insert into images(id,img_name) values('$file_id',' $filePath')";
          mysqli_query($con, $query);
          }
        }
      }
    }

  echo "<h1>Uploaded:</h1>";
  if (is_array($files))
    {
    echo "<ul>";
    foreach($files as $file)
      {
      echo "<li>$file</li>";
      }

    echo "</ul>";
    }
  }

?>
属性 img_name 类型的

表格图片 LONGBLOB 现在它完全正常工作,但当我从数据库中删除图像时,得到的图像名称未找到错误。这是使用href

发送图像ID和图像名称的代码
<ul>
  <a href="index.php?img_id=<?php echo urlencode($id); ?>&img=<?php echo urlencode($img); ?>" 
    style="color:red; margin-left:18px;" onclick="return confirm('Are you sure you want to delete this?')" >Delete
  </a>
</ul>

现在这里是想要从我的数据库以及名为img的localhost文件夹中删除的代码。

<?php

if (isset($_GET['img_id'], $_GET['img']))
  {
  $id = $_GET['img_id'];
  $img = $_GET['img'];
  $query = "delete from images where id='$id' and image='$img'";
  if (mysqli_query($con, $query))
    {
    unlink($img);
    echo '<script language="javascript">';
    echo 'alert("Image Deleted successfully")';
    echo '</script>';
    }
    else
    {
    echo '<script language="javascript">';
    echo 'alert("image does not exist")';
    echo '</script>';
    }
  } 
?>

现在显示没有找到img / image_name.jpg的警告。请帮助我。

2 个答案:

答案 0 :(得分:2)

我认为您的删除查询错误

if(isset($_GET['img_id'] , $_GET['img'])){
$id=$_GET['img_id'];
$img=$_GET['img'];
$query="delete from images where id='$id' and image='$id'";
}

$query="delete from images where id='$id' and image='$img'";

在此查询中,您使用相同的$ id变量

检查Id和Image字段

答案 1 :(得分:2)

试试这个:

    <?php
    if (isset($_FILES['image']['name'])) {
      $name = $_FILES['image']['name'];
      $tmpname1 = $_FILES['image']['tmp_name'];
      $exten = explode(".", $_FILES['image']['name']);
      $exten = $exten[1];
      if ($exten != '') {
        $image_name = "img" . time() . "." . $exten;
      }

      move_uploaded_file($tmpname1, FCPATH . 'assets/admin/uploads/' . $image_name);
      $query = "insert into images(id,img_name) values('your_id',' $image_name')";
      mysqli_query($con, $query);
//see your code
/*
$id=$_GET['img_id'];
$img=$_GET['img'];
$query="delete from images where id='$id' and image='$id'";
*/

为图像传递相同的id值。你应该试试这个 -

$query="delete from images where id='$id' and image='$img'";
    }