如何在图像上传中销毁当前图像

时间:2014-07-19 08:03:56

标签: php jquery html ajax pdo

我想要做的是当用户决定更改其个人资料图片时,数据库中的链接将更新并将图像移动到上传文件夹并销毁该特定用户上传文件夹中的当前链接和图像。

我的代码中的问题是当用户更改其个人资料图片时,它会在上传文件夹中添加另一张图片。我想要做的是在他选择的新图像移动到上传文件夹之前,首先删除该特定用户的当前图像。

php code

<?php
include_once('../dbc/database.php');

$db = new Connection();
$db = $db->dbConnect();
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


$email = isset($_POST['email']) ? $_POST['email'] : "";
$image = addslashes(file_get_contents($_FILES['imageInput']['tmp_name']));
$image_name = addslashes($_FILES['imageInput']['name']);
$image_size = getimagesize($_FILES['imageInput']['tmp_name']);

move_uploaded_file($_FILES["imageInput"]["tmp_name"], "../upload/" . $_FILES["imageInput"]["name"]);
$location = "elogFiles/upload/" . $_FILES["imageInput"]["name"];


$qOldpic = "SELECT user_image FROM tbl_user WHERE user_email = : email";
$queryOldpic = $db->prepare($qOldpic);
$queryOldpic->bindParam(':email', $email);
$queryOldpic->execute();
$num_rows = $queryOldpic->rowCount(); 


if ($num_rows == 1) {
    unlink($queryOldpic);
    $q = "UPDATE tbl_user SET user_image = '$location' WHERE user_email= :email ";
    $query = $db->prepare($q);
    $query->bindParam(':email', $email);
    $results = $query->execute();
    echo "1";
}


?>

2 个答案:

答案 0 :(得分:0)

http://php.net/manual/en/function.unlink.php

以上网址将帮助您了解删除上一个图像文件的正确方法。

如果要在给定位置上不存在该文件时使错误消息不可见,请使用“@”,这样您就可以忽略错误显示如下:

<?php
unlink($filename);
?>

答案 1 :(得分:0)

在执行update之前,请运行select并按user_image email获取$oldPicture,将其存储到变量中,例如if ((!!$oldPicture) && (file_exists($oldPicture))) { unlink($oldPicture); }

之后,你应该删除这样的图片:

$oldPicture

如果您的路径有值且文件存在,则只删除图像。确保update的路径正确无误。最后,在if之后,您可以运行{{1}}命令。我不会深入研究安全问题,因为它超出了这个问题的范围,但请确保阻止SQL injection