Foros del Web » Programando para Internet » PHP »

ayuda con file_exists

Estas en el tema de ayuda con file_exists en el foro de PHP en Foros del Web. Hola que tal, tengo un problema con file_exists haber si alguien me puede ayudar. Lo que pasa es que mi script cuando suben una imagen ...
  #1 (permalink)  
Antiguo 25/07/2010, 13:48
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
ayuda con file_exists

Hola que tal, tengo un problema con file_exists haber si alguien me puede ayudar.

Lo que pasa es que mi script cuando suben una imagen y si lla existe le agrega un numero creado con la funcion rand() y lo que quiero hacer es que si la imagen ya existe al nombre le agrege 001 por ejemplo: manzana_001.png, manzana_002.png, etc.

Alguien que me pueda ayudar???

Este es el script para agregar el rand si la imagen ya existe:

Código PHP:
Ver original
  1. if(file_exists($server[$rand_server].'/'.$destino[$rand_destino].'/'.$nombre.'.'.$tipo))
  2.             {
  3.                 $nombre .= "_".rand();
  4.             }

Saludos y gracias de antemano
  #2 (permalink)  
Antiguo 28/07/2010, 22:36
 
Fecha de Ingreso: julio-2010
Mensajes: 19
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: ayuda con file_exists

Algo asi te puede ayudar.

Código PHP:

$mi_file  
"manzana";
$mi_ext "png";


$path="carpeta/";



$directorio=dir($path);

while (
$archivo $directorio->read())
{
        
$trozos explode("."$archivo); //separamos la extension del nombre
    
$n_archivo $trozos[0];
    
$ext_archivo =$trozos[1];

    
$trozos2 explode("_"$n_archivo); //separamos el numero

    
$el_nombre $trozos2[0];
    
$el_numero =$trozos2[1];

    
//echo "Nombre:".$el_nombre."<br>";
    //echo "Numero:".$el_numero."<br>";

    
if ($el_nombre == $mi_file){
            
$nuevo_nombre $el_nombre."_".rand().".".$ext_archivo;

           
// y guardas aqui..
          
        
}

}
$directorio->close(); 
  #3 (permalink)  
Antiguo 31/07/2010, 20:20
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: ayuda con file_exists

Muchas gracias rabernet por responder; pero con rand() le crea un numero aleatorio al archivo si lla existe, pero lo que quiero hacer es que le agrege _001, _002, etc...

Saludos y gracias de antemano
  #4 (permalink)  
Antiguo 31/07/2010, 21:01
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: ayuda con file_exists

Podrías utilizar una base de datos, donde guardas la numeración. Así al subir una nueva imagen, obtienes el último número, le sumas 1 y se lo asignas al nombre de la nueva imagen.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 31/07/2010, 21:58
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: ayuda con file_exists

Cita:
Iniciado por spider_boy Ver Mensaje
Podrías utilizar una base de datos, donde guardas la numeración. Así al subir una nueva imagen, obtienes el último número, le sumas 1 y se lo asignas al nombre de la nueva imagen.
Muchas gracias spider_boy, pero eso como se podria hacer sin poner una base de datos de pormedio

Saludos!!!
  #6 (permalink)  
Antiguo 01/08/2010, 09:54
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: ayuda con file_exists

La única forma que se me ocurre, sin necesidad de una BD, es leyendo todos los archivos dentro de la carpeta, separarlos por el guion bajo ( _ ), y luego ordenar los números para obtener el mayor.

Ej :

Código PHP:
Ver original
  1. // Debes hallar la forma de quitarle la extensión...
  2. $imagen[] = "imagen_001.jpg";
  3. $imagen[] = "imagen_002.jpg";
  4.  
  5. // Este código supone que ya le quitaste la extensión
  6. $count = count($imagen);
  7. $exp = array();
  8. $img = array();
  9. for($i = 0; $i < $count; ++$i) {
  10.     $exp[] = explode("_", $imagen);
  11.     $img[] = $exp[1];
  12. }
  13. echo max($img);

Así lo obtendrías. No lo he probado, así que no te garantizo que funcione, pero esa es la idea. Que separes por el guión bajo y guardes el número en un arreglo, y luego saques el mayor con la función max().
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 01/08/2010, 10:15
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: ayuda con file_exists

Yo lo haria de otra forma...
Código PHP:
Ver original
  1. <?php
  2. function checkNameFile($file) {
  3.     if (file_exists($file)) {
  4.         $fileExists = true;
  5.         $countFiles = 1;
  6.         while($fileExists) {
  7.             $tempNameFile = stre_replace('.jpg','',$file);
  8.             $tempNameFile = $tempNameFile.'_'.$countFiles.'.jpg';
  9.             if (!file_exists($tempNameFile)) {
  10.                 $newNameFile = $tempNameFile;
  11.                 $fileExists = false;
  12.             }
  13.  
  14.             $countFiles++;
  15.         }
  16.     }else {
  17.         $newNameFile = $file;
  18.     }
  19.    
  20.     return $newNameFile;
  21. }
  22.  
  23. //La forma de utilizarlo es
  24. $file = 'imagen.jpg';
  25. $newName = checkNameFile($file);
  26. /**
  27. * Si no existe imagen.jpg regresara el nombre original (imagen.jpg), en caso
  28. * contrario, si existe buscará algun nombre que no este ocupado...
  29. * imagen.jpg
  30. * imagen_1.jpg
  31. * imagen_2.jpg
  32. * etc
  33. */

Ojo, lo he hecho al vuelo, así que no lo eh probado >.<
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 02/08/2010, 19:31
 
Fecha de Ingreso: agosto-2009
Mensajes: 292
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: ayuda con file_exists

Cita:
Iniciado por Nemutagk Ver Mensaje
Yo lo haria de otra forma...
Código PHP:
Ver original
  1. <?php
  2. function checkNameFile($file) {
  3.     if (file_exists($file)) {
  4.         $fileExists = true;
  5.         $countFiles = 1;
  6.         while($fileExists) {
  7.             $tempNameFile = stre_replace('.jpg','',$file);
  8.             $tempNameFile = $tempNameFile.'_'.$countFiles.'.jpg';
  9.             if (!file_exists($tempNameFile)) {
  10.                 $newNameFile = $tempNameFile;
  11.                 $fileExists = false;
  12.             }
  13.  
  14.             $countFiles++;
  15.         }
  16.     }else {
  17.         $newNameFile = $file;
  18.     }
  19.    
  20.     return $newNameFile;
  21. }
  22.  
  23. //La forma de utilizarlo es
  24. $file = 'imagen.jpg';
  25. $newName = checkNameFile($file);
  26. /**
  27. * Si no existe imagen.jpg regresara el nombre original (imagen.jpg), en caso
  28. * contrario, si existe buscará algun nombre que no este ocupado...
  29. * imagen.jpg
  30. * imagen_1.jpg
  31. * imagen_2.jpg
  32. * etc
  33. */

Ojo, lo he hecho al vuelo, así que no lo eh probado >.<
Hola que tal Nemutagk, he modificado un poco el codigo y lo tengo de esta manera

Código PHP:
Ver original
  1. if(file_exists($server[$rand_server].'/'.$destino[$rand_destino].'/'.$nombre.'.'.$tipo))
  2.             {
  3.                 $fileExists = true;
  4.                 $countFiles = 1;
  5.                 while($fileExists)
  6.                 {
  7.                     $tempNameFile = $nombre.'_'.$countFiles;
  8.                     if(!file_exists($tempNameFile))
  9.                     {
  10.                         $nombre = $tempNameFile;
  11.                         $fileExists = false;
  12.                     }
  13.                     $countFiles++;
  14.                 }
  15.             }

Y si subo una imagen y no existe se queda con su nombre original y si la vuelvo a subir se le agrega _1 y si la vuelvo a subir se queda con _1

Sabes a que se debe esto

Saludos y gracias de antemano
  #9 (permalink)  
Antiguo 03/08/2010, 04:29
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años, 1 mes
Puntos: 406
Respuesta: ayuda con file_exists

No entendiste nada de lo que hace la función y la modificaste sin tener en cuenta esto, en el código modificado en ningún momento le estas pasando la url del archivo, solo el nombre, así jamas te va a encontrar el archivo ¬¬

Ahora, has quitado la función que ingresaba el numero entre el nombre y la extensión, en tu código modificado estas creando imágenes con el siguiente nombre "image.jpg_1, imagen.jpg_2"...

La ultima, la razón porque la ingrese en una función fue para encapsular las variables y no fueran modificadas desde el exterior (y no preocuparse por eso), así mismo para facilitar el uso, lo único que tenias que hacer era pasarle el URL de la imagen, nada mas, al final te regresaría la misma url de la imagen pero con el nuevo nombre
Código PHP:
Ver original
  1. $imagen = '../../imagenes/imagen.jpg';
  2. $newImagen = checkNameFile($imagen);
  3. //Ves la diferencia, has complicado lo que ya era sencillo de utilizar...
  4. //Al final te regresaría '../../imagenes/imagen_1.jpg'
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Etiquetas: Ninguno
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 16:24.