【发布时间】:2014-07-19 08:03:55
【问题描述】:
我想做的是当用户决定更改他的个人资料图片时,数据库中的链接将被更新并将图像移动到上传文件夹并销毁该特定用户上传文件夹中的当前链接和图像。
我的代码中的问题是,当用户更改他的个人资料图片时,它会在上传文件夹中添加另一张图片。我要做的是先删除该特定用户的当前图像,然后再将他选择的新图像移至上传文件夹。
php代码
<?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";
}
?>
【问题讨论】:
-
切勿以客户提供的名称存储此类图像!始终根据用户 ID 创建一个内部名称以确保安全。那么你所要做的就是在目标路径上调用
unlink(),然后再调用move_uploaded_file()。 -
可以使用unlink()函数删除文件。