Foros del Web » Programando para Internet » PHP »

Problema UPLOAD imagen concreto.

Estas en el tema de Problema UPLOAD imagen concreto. en el foro de PHP en Foros del Web. Tengo el siguiente código de upload para una imagen: $uploaddir = 'img/'; $imagen = $uploaddir . basename($_FILES['imagen']['name']); if (move_uploaded_file($_FILES['imagen']['tmp_name'], $imagen)) { $msg1 = "La imagen ...
  #1 (permalink)  
Antiguo 20/11/2009, 17:55
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 2 meses
Puntos: 1
Problema UPLOAD imagen concreto.

Tengo el siguiente código de upload para una imagen:

$uploaddir = 'img/';
$imagen = $uploaddir . basename($_FILES['imagen']['name']);
if (move_uploaded_file($_FILES['imagen']['tmp_name'], $imagen)) {
$msg1 = "La imagen 1 se guardo satisfactoriamente.\n";
chmod("$imagen", 0644);
} else {
$err_msg1 = "Posible error al guardar la imagen 1!\n";
}


funciona, la guarda, pero en la base de datos me almacena tambien la ruta $uploaddir (imagenes/imagen.jpg). Hasta ahi relativamente bien.

El problema es que, cuando quiero modificar el resto de datos del formulario y envio, se me esfuma la imagen. Pienso que es porque por defecto, si no hay valor en el input file, me pinta $uploaddir, cosa que he comprobado en phpmyadmin, es decir me quita la imagen anterior y me la cambia por imagenes/.

Que puede estar saliendo mal?
gracias de antebrazo (hoygan Xd)
  #2 (permalink)  
Antiguo 20/11/2009, 19:08
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema UPLOAD imagen concreto.

Hoyga, amigo, lo que necesitas es verificar si hay imagen para subir o no:

Código php:
Ver original
  1. $imagen = '';
  2. // Primero verificas que se selecciono un archivo
  3. if($_FILES['imagen']['tmp_name'] != '') {
  4.     // Si no hubo errores al subir el archivo, entonces continuas
  5.     if($_FILES['imagen']['error'] == 0) {
  6.         // Aqui debieras ver si el archivo tiene una extension valida (gif, jpg, png, bmp, etc)
  7.         // Finalmente pones aqui el codigo para mover la imagen a su destino final
  8.         // sin olvidarte de poner en $imagen el nombre del archivo para guardarlo
  9.     }
  10. }
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 21/11/2009, 08:21
 
Fecha de Ingreso: febrero-2008
Mensajes: 120
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Problema UPLOAD imagen concreto.

Gracias por tu respuesta.

No obstante, el problema real es que en mi funcion, se almacena el directorio en la bbdd y mi intencion es almacenar solamente la imagen, no la ruta. De ese modo, si no hay datos, no me cambiará nada, pero si hay como mínimo el nomrbe de la ruta, me sustituye la imagen por el mismo.

Asi pues, la intencion es hacer que me cuelgue en bbdd solamente el nomrbe de la imagen.

Thank's a lot!
  #4 (permalink)  
Antiguo 21/11/2009, 08:27
 
Fecha de Ingreso: junio-2006
Ubicación: Antofagasta
Mensajes: 216
Antigüedad: 17 años, 10 meses
Puntos: 7
Respuesta: Problema UPLOAD imagen concreto.

http://es.php.net/pathinfo


ejemplo:

Código PHP:
<?php
$imagen 
pathinfo('/carpeta/imagen.jpg');

echo 
$imagen['basename'];
?>
  #5 (permalink)  
Antiguo 21/11/2009, 09:39
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Problema UPLOAD imagen concreto.

Y por que no en lugar de concatenar la carpeta con el nombre del archivo y guardarlo en una variable, concatenas directo al moverlo?
Código PHP:
$uploaddir 'img/';
$imagen basename($_FILES['imagen']['name']);
if (
move_uploaded_file($_FILES['imagen']['tmp_name'], $uploaddir.$imagen)) {
//etc 
  #6 (permalink)  
Antiguo 21/11/2009, 16:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema UPLOAD imagen concreto.

Si estas editando un registro que ya tiene imagen y no subes una nueva, todo lo que debes hacer (aparte de lo ya sugerido) es inicializar la variable con el contenido actual:

$imagen = $row['imagen'];

Si no hay archivo para subir, no modifiques la variable y te mantendra el valor que tienes en la base de datos.
__________________
- León, Guanajuato
- GV-Foto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:32.