Foros del Web » Programando para Internet » PHP »

Problema con imagenes que se sobreescriben al subir al host

Estas en el tema de Problema con imagenes que se sobreescriben al subir al host en el foro de PHP en Foros del Web. Hace unos días os pregunté sobre como evitar que dos imagenes diferentes pero con mismo nombre no se sobreescriban unas con otras al subirlas a ...
  #1 (permalink)  
Antiguo 03/11/2013, 14:18
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 10 meses
Puntos: 0
Exclamación Problema con imagenes que se sobreescriben al subir al host

Hace unos días os pregunté sobre como evitar que dos imagenes diferentes pero con mismo nombre no se sobreescriban unas con otras al subirlas a una carpeta del host, para solucionarlo opté por incluir un numero aleatorio antes del nombre haciendolo así:


$rand=rand(100000,999999);
move_uploaded_file($archivo,$rutax."/".$rand."_".$nombreArchivo);
$ruta=$ruta."/".$rand."_".$nombreArchivo;


Su función la realiza a la perfeccion pero me acabo de dar cuenta de un error:

Al decirle que genere un numero aleatorio antes del nombre del archivo, cuando se suben por ejemplo 3 imágenes (en total hay para subir 6), el resto de imagenes que no se han subido graban en su casilla de la base de datos el numero aleatorio...

esto me es un problema porque cuando no lo generaba (el numero aleaotrio) se grababa en la casilla la dirección donde debía ir el archivo, y para que shadowbox no me mostrara las imágenes en blanco le puse un comparativo diciendo que:

<?php if ($fila[8]!="/ruta/imagenes/"):?>

<a href="<?php echo $fila[8];?>"rel="shadowbox[<?php echo $contador;?>]" style="display:none"><img src=<?php echo $fila[8];?> width="180"></a>

de ésta manera solo me mostraba las imagenes que existian...pero ahora me muestra TODAS (las que no existen da error) y es debido a que cunado no hay fotos ahora en vez de grabar en la base de datos esto:

/ruta/imagenes/

graba por ejemplo esto

/ruta/imagenes/642342_

con el numero aleatorio incluido, así que me muestra errores en la fotografías que no hay....

Se podría solucionar diciéndole que en las casillas que no hay foto ponga un 0, por ejemplo y en el comparativo poner el 0:

<?php if ($fila[8]!="0"):?>


pero claro.....no se como se haria.....

¿Alguna idea?


  #2 (permalink)  
Antiguo 03/11/2013, 20:06
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Problema con imagenes que se sobreescriben al subir al host

Mmm, lo ideal sería que soluciones el problema en el momento de la subida, ahi seguramente se podría evitar que cargue 6 imágenes. Mostrános el código de donde sube que lo vemos.
  #3 (permalink)  
Antiguo 04/11/2013, 16:10
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 10 meses
Puntos: 0
Información Respuesta: Problema con imagenes que se sobreescriben al subir al host

$ruta="/ruta/imagenes";
$ruta2="/ruta/imagenes";
$ruta3="/ruta/imagenes";
$ruta4="/ruta/imagenes";
$ruta5="/ruta/imagenes";
$ruta6="/ruta/imagenes";

>(por aquí le pongo restricciones en cuanto a tamaño y extensiones de archivos permitidas)< y luego las muevo a la carpeta del host:

$rand=rand(100000,999999);
move_uploaded_file($archivo,$rutax."/".$rand."_".$nombreArchivo);
$ruta=$ruta."/".$rand."_".$nombreArchivo;

move_uploaded_file($archivo2,$rutax."/".$rand."_".$nombreArchivo2);
$ruta2=$ruta2."/".$rand."_".$nombreArchivo2;

move_uploaded_file($archivo3,$rutax."/".$rand."_".$nombreArchivo3);
$ruta3=$ruta3."/".$rand."_".$nombreArchivo3;

move_uploaded_file($archivo4,$rutax."/".$rand."_".$nombreArchivo4);
$ruta4=$ruta4."/".$rand."_".$nombreArchivo4;

move_uploaded_file($archivo5,$rutax."/".$rand."_".$nombreArchivo5);
$ruta5=$ruta5."/".$rand."_".$nombreArchivo5;

move_uploaded_file($archivo6,$rutax."/".$rand."_".$nombreArchivo6);
$ruta6=$ruta6."/".$rand."_".$nombreArchivo6;



>(Aquí hago la conexión a la Base de Datos)< y luego:

mysql_query("INSERT INTO form (imagen1,imagen2,imagen3,imagen4,imagen5,imagen6) VALUES ('$ruta','$ruta2','$ruta3','$ruta4','$ruta5','$rut a6')






Creo que antes de que mueva el archivo a la base de datos lo más lógico sería que primero se verificara si hay imagen mediante un if....y si la hay que la mueva

Pero como no sabia hacerlo decidí que guardara la ruta y utilizar el comparativo para descartar las que no tenían imágenes....
  #4 (permalink)  
Antiguo 11/11/2013, 15:39
Avatar de angel_xx_1990  
Fecha de Ingreso: junio-2013
Ubicación: Guadalajara
Mensajes: 236
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Problema con imagenes que se sobreescriben al subir al host

Estoy pensando en eliminar lo de rand en un primer momento y utilizar "file_exists", diciendo que si el archivo existe lo renombre, pero no se como hacelo,.

Creo que debería de utilizar el "file_exists", cuando doy el nombre al archivo que subo, no?


$archivo=$_FILES['imagen1']['tmp_name'];
$nombreArchivo=$_FILES['imagen1']['name'];
$nombreArchivo = str_replace(" ","_",$nombreArchivo);
$nombreArchivo = str_replace("'","_",$nombreArchivo);



if (file_exists($nombreArchivo)) {

$rand=rand(100000,999999);
rename ($nombreArchivo,".$rand."_".$nombreArchivo);
move_uploaded_file($archivo,$rutax."/".$rand."_".$nombreArchivo);
$ruta=$ruta."/".$rand."_".$nombreArchivo;


} else {

move_uploaded_file($archivo,$rutax."/"$nombreArchivo);
$ruta=$ruta."/"$nombreArchivo;

}



¿Algo así podría ir bien?

Gracias!

Etiquetas: imagenes
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 18:21.