Foros del Web » Programando para Internet » PHP »

Buscar archivo en directorio

Estas en el tema de Buscar archivo en directorio en el foro de PHP en Foros del Web. Buenas tardes, el día de hoy me surge un inconveniente al querer buscar sí un archivo existe en un directorio o sí hay que subirlo, ...
  #1 (permalink)  
Antiguo 11/05/2011, 17:02
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Buscar archivo en directorio

Buenas tardes,

el día de hoy me surge un inconveniente al querer buscar sí un archivo existe en un directorio o sí hay que subirlo, el problema es que no conozco la extensión del archivo que es una imágen...

me explico mejor,

Debo subir una imagen a un directorio, no hay problema, ya está hecho, la imágen siempre va a tener el mismo nombre pero lo que cambia es la extensión.

La idea es que si esa imagen existe en ese directorio, que tome la ruta y me muestre la imagen, de lo contrario que me permita subirla, pensé en algo como esto:

Código PHP:
<?php
    $filename 
"organigrama.(extensión desconocida)";
    if (
file_exists($filename)){
        
$obtener_ruta_imagen;
    
?>
<img alt="Organigrama" src="<?php echo $ruta_Obtenida?>" />
    <?php
    
}
    else{
    
?>    
    <body>
        <form action="cargaArchivos.php" method="post" enctype="multipart/form-data">
            <input type="file"  name="ufile" />
            <input type="submit" value="Subir Imagen" />
        </form> 
    </body>
    <?php
    
}
    
?>

Pero al no tener la extensión del archivo, el file_exist no funciona, alguna idea de cómo hacerlo?

Agradezco la ayuda que me puedan brindar.
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #2 (permalink)  
Antiguo 11/05/2011, 17:06
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Buscar archivo en directorio

Pues obviamente no se puede hacer mucha magia, sino lógica.

Comprueba primero que la imagen exista con una extensión, si no existe pruebas con otra extensión, etc...

La verdad no veo donde está el problema!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 11/05/2011, 23:54
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Buscar archivo en directorio

Yo haría que el script leyera todo el directorio ( opendir() , readdir() ), recortaría la extensión con substr y usaría el dato fijo que mencionas ("organigrama") justo en la condicional.

En el manual sale un ejemplo que puedes adaptar sólo un poco y aplicarlo directamente: http://www.php.net/manual/es/function.readdir.php
  #4 (permalink)  
Antiguo 12/05/2011, 07:53
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Buscar archivo en directorio

Gracias por responder a ambos, ya logré solucionarlo y lo hice como me sugirió metacortex, voy a adjuntar el code que quedó, si tienen alguna idea para optimizarlo, bienvenida sea!

Código PHP:
<?php
    $filename 
"organigrama";
    
$dir "../fcvl/imagenes/";
    
// Abre un directorio conocido, y procede a leer el contenido
    
if (is_dir($dir)) {
        if (
$dh opendir($dir)) {
            while ((
$file readdir($dh)) !== false) {
                if(
ereg($filename$file)){
                    
$archivo $file;
                } 
            }
            
closedir($dh);
        }
    }
    if (isset(
$archivo)){
        
$ruta_Obtenida $dir.$filename;
    
?>
    <img alt="Organigrama" src="<?php echo $ruta_Obtenida?>" />
    <?php
    
}
    else{
    
?>    
    <body>
        <form action="cargaArchivos.php" method="post" enctype="multipart/form-data">
            <input type="file"  name="ufile"/>
            <input type="submit" value="Subir Imagen" />
        </form> 
    </body>
    <?php
    
}
    
?>
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #5 (permalink)  
Antiguo 12/05/2011, 08:15
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años
Puntos: 236
Respuesta: Buscar archivo en directorio

Hola!;
Tengo una duda, si $filename no se le conoce la extensión, entonces, ¿cómo le haces para que tenga coincidencia con $file?.
Lo digo por que, si por ejemplo, tienes $filename="mi_imagen" y haces el escaneo del directorio, en cuánto encuentre que otro archivo tiene el mísmo nombre, por ejemplo $file="mi_imagen_calabaza.jpg", va a seleccionar ese, pero en realidad era necesario "mi_imagen.png".
Parece ser el mísmo resultado que el que tenías anteriormente.

Haber si puedes explicarme, si es que me equivóco, saludos!.

Última edición por angelfcm; 12/05/2011 a las 08:30
  #6 (permalink)  
Antiguo 12/05/2011, 08:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Buscar archivo en directorio

En ese caso yo usaría expresiones regulares, para verificar los posibles formatos.
Cita:
/ˆorganigrama\.(jpe?g|png|gif)$/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 12/05/2011, 10:29
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Buscar archivo en directorio

Cita:
Iniciado por lobo_php Ver Mensaje
Código PHP:
if(ereg($filename... 
¿if ereg?

Además incluyes <body> en la condicional (si la imagen existe, te quedas sin la estructura base html).

Éste es el código ya mejorado. Puede listar varios archivos en el directorio y realiza una comprobación automática de imagen, es decir, descarta todo lo que no sea imagen:

Código PHP:
Ver original
  1. <?php
  2. $html = null;
  3. $ruta = '../fcvl/imagenes/';
  4.  
  5. if ($gestor = opendir('.')) {
  6.     while (false !== ($archivo = readdir($gestor))) {
  7.         $size = @getimagesize($archivo);
  8.         if (is_file($archivo) and substr($archivo , 0 , 12) == 'organigrama.' and $size[0] > 0)
  9.             $html .= '<p>'. $ruta . $archivo .'</p>';
  10.     }
  11.     closedir($gestor);
  12. }
  13.  
  14. if(is_null($html))
  15.     $html .= '
  16.    <form action="cargaArchivos.php" method="post" enctype="multipart/form-data">
  17.        <input type="file" name="ufile"/>
  18.        <input type="submit" value="Subir Imagen" />
  19.    </form>';
  20.  
  21. echo $html;
  22. ?>
  #8 (permalink)  
Antiguo 13/05/2011, 16:49
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Buscar archivo en directorio

Metacortex, no quiero que me publique la ruta de la imágen, al yo hacer el if ereg, busco si el nombre del archivo contiene "Organigrama" y se lo asigno a la variable archivo, me cercioro de que la imágen sólo contenga la palabra "Organigrama" porque cuando la suben al moverla a la carpeta del servidor la renombro organigrama y luego valido si la imágen existe para que no me permita mostrar el <input type=file>
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #9 (permalink)  
Antiguo 13/05/2011, 17:01
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 16 años, 5 meses
Puntos: 75
Respuesta: Buscar archivo en directorio

Cita:
Iniciado por angelfcm Ver Mensaje
Hola!;
Tengo una duda, si $filename no se le conoce la extensión, entonces, ¿cómo le haces para que tenga coincidencia con $file?.
Lo digo por que, si por ejemplo, tienes $filename="mi_imagen" y haces el escaneo del directorio, en cuánto encuentre que otro archivo tiene el mísmo nombre, por ejemplo $file="mi_imagen_calabaza.jpg", va a seleccionar ese, pero en realidad era necesario "mi_imagen.png".
Parece ser el mísmo resultado que el que tenías anteriormente.

Haber si puedes explicarme, si es que me equivóco, saludos!.
Sencillo,

el archivo que me hace la copia de la imagen hace esto

Código PHP:
$info pathinfo($_FILES['ufile']['name']);
$name "organigrama.".$info['extension'];
$uploaddir "../../imagenes/";
$uploaddir "../../imagenes/";
$path $uploaddir.$name;

if(
$ufile != none){ //AS LONG AS A FILE WAS SELECTED...
    
if(copy($_FILES['ufile']['tmp_name'], $path)){ //IF IT HAS BEEN COPIED...

        //obtener nombre de archivo
        
$theFileName $name;

        
//obtener tamaño de archivo
        
$theFileSize $_FILES['ufile']['size'];

        if (
$theFileSize>999999){ //IF GREATER THAN 999KB, DISPLAY AS MB
            
$theDiv $theFileSize 1000000;
            
$theFileSize round($theDiv1)." MB"//round($queRedondea, $cuantosDecimales)
        
} else { //OTHERWISE DISPLAY AS KB
            
$theDiv $theFileSize 1000;
            
$theFileSize round($theDiv1)." KB"//round($queRedondea, $cuantosDecimales)
        

es decir, sube una imágen cualquiera, con una extensión cualquiera y
yo la renombro como organigrama y le asigno la misma extensión

EJ: recibo alguna_imagen.png
cuando guardo la imagen en la carpeta imagenes que está en el servidor local

la guarda como organigrama.png y en otro archivo valido si organigrama.png existe
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175

Etiquetas: directorio
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 20:11.