entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

¿Cómo borrar una imagen de la base de datos y de carpeta local con PHP?

Hola tengo un formulario el cual sube imágenes a la db y las guarda en una carpeta en mi localhost pero al tratar de eliminarla solo se elimina de la db pero sigue estando en la carpeta del localhost. Por favor si pueden ayudarme.
Este es el codigo para subir las imagens

<?php
include ('conexion.php');
$nombre      = $_POST['nombre'];
$descripcion = $_POST['descripcion'];
$imagen      = addslashes(file_get_contents($_FILES['imagen']['tmp_name']));

$carpetaPublica  = '/\\uploads/\\'; // carpeta que estara disponible desde el navegador
$rutaEnServidor = "C:/\\wamp64/\\www/\\Proyecto$carpetaPublica"; // ruta completa para que el move_upload_file no se maree.. 

$nombreImagen    = date('Ymd_His').rand().$_FILES['imagen']['name'];
$rutaFinalImagenBd = $carpetaPublica.$nombreImagen;

$rutaFinalImagen = $rutaEnServidor.$nombreImagen; 
$pathImagen = move_uploaded_file($_FILES['imagen']['tmp_name'], $rutaFinalImagen);

if ($pathImagen) {

   $query = "INSERT INTO imagenes(nombre, descripcion, ruta_imagen) VALUES ('$nombre', '$descripcion',  '$rutaFinalImagenBd')";
    $resultado = $conexion->query($query);
}{

if($resultado){
    echo"<script type='text/javascript'>;
alert ('El archivo se subio correctamente');
window.location='eliminar.php';
</script>";
 }else {
     echo"<script type='text/javascript'>;
alert ('Error al subir el archivo');
window.location='eliminar.php';
</script>";

 }}
 ?>

Este es el código para eliminar

 if(isset($_GET['cve_imagen'])){
    $cve_imagen= $_GET['cve_imagen'];
  }
try {
include('conexion.php');

$sql="DELETE FROM imagenes WHERE cve_imagen='$cve_imagen'";
$resultado=mysqli_query($conexion, $sql);
if($resultado){
    unlink("C:/\\wamp64/\\www/\\Proyecto");}
echo"<script type='text/javascript'>;
alert ('Archivo Borrado');
window.location='eliminar.php';
</script>";

} catch(Exception $e){
    $error=$e->getMessage();
  }

1 Respuesta

1voto

carlossevi Puntos63580

La ruta que utilizas para la eliminación no parece ser la ruta de la imagen:

unlink("C:/\\wamp64/\\www/\\Proyecto");

Deberías rescatar la ruta de la imagen de la bbdd antes de eliminar el registro. Te propondría la consulta SQL para ello pero no queda clara la estructura de tu tabla de imágenes. Debería ser algo similar a:

SELECT ruta_imagen FROM imagenes WHERE cve_imagen='$cve_imagen'

1voto

Eduardo_Torres comentado

La tabla imágenes cuenta con cve_imagenes, nombre, descripción y ruta y referente a la ruta de la imagen me faltaba esto unlink("C:/\wamp64/\www/\Proyecto/\uploads");
pero aun asi me sigue apareciendo el mensaje de error de permiso denegado en...

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta