Foros del Web » Programando para Internet » PHP »

Consejo para buscador de archivos

Estas en el tema de Consejo para buscador de archivos en el foro de PHP en Foros del Web. Quisiera saber sus opiniones en este tema. Tengo un sistema web en el cual usuarios suben archivos a un directorio del servidor. En dicho sistema ...
  #1 (permalink)  
Antiguo 24/11/2015, 16:03
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Consejo para buscador de archivos

Quisiera saber sus opiniones en este tema.

Tengo un sistema web en el cual usuarios suben archivos a un directorio del servidor.
En dicho sistema los usuarios tienen la capacidad de mover, copiar, eliminar y renombrar directorios y archivos.

Llega la hora en la que se requiere un buscador de los mismos archivos y no se cual seria un método eficiente de implementarlo.

He probado unos códigos en php para buscar un archivo en mi sistema pero no me funciona como quiero. ya que no me recorre todos los subdirectorios.

También intente hacerlo mediante la base de datos, de modo que cada que subo un archivo almaceno su ruta y el nombre del archivo cargado al sistema.
Solo que me da problemas cuando cambio de nombre una carpeta, ya que al cambiar de nombre no me cambia el nombre para las subcarpetas de la misma.

La verdad que no logro dar solucion.

Algún metodo para mi situacion?

Gracias
  #2 (permalink)  
Antiguo 24/11/2015, 16:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consejo para buscador de archivos

Habiendo tantos sistemas pre-hechos que ya resuelven dicho problema ¿por qué molestarse en hacer todo de nuevo?

Sencillamente no lo entiendo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/11/2015, 21:43
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Consejo para buscador de archivos

Cita:
Iniciado por pateketrueke Ver Mensaje
Habiendo tantos sistemas pre-hechos que ya resuelven dicho problema ¿por qué molestarse en hacer todo de nuevo?

Sencillamente no lo entiendo.
La verdad es que no encuentro un ejemplo que pueda seguir, crees que me puedas compartir uno de esos sistemas de los cuales hablas por favor?
  #4 (permalink)  
Antiguo 24/11/2015, 22:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Consejo para buscador de archivos

Google: php file manager explorer
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/11/2015, 22:42
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Consejo para buscador de archivos

Cita:
Iniciado por pateketrueke Ver Mensaje
Amigo gracias por tu buena intención pero no se si no nos entendemos, yo ya cuento con un explorador en php, solo me falta agregarle un buscador de archivos.
Esa es mi problemática de momento. Algún consejo?
  #6 (permalink)  
Antiguo 25/11/2015, 02:02
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Consejo para buscador de archivos

Saludo.
Pues creo que lo más fácil es modificar el programa que ya tienes
agregandole la funcionalidad de búsqueda, un formulario para ello,
y luego que se ejecute una función que recorra los
directorios y subdirectorios, y devuelva los resultados correspondientes.

Aquí en el foro hay varios ejemplos de funciones que hacen ese
tipo de funcionalidad.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 25/11/2015, 14:15
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Consejo para buscador de archivos

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo.
Pues creo que lo más fácil es modificar el programa que ya tienes
agregandole la funcionalidad de búsqueda, un formulario para ello,
y luego que se ejecute una función que recorra los
directorios y subdirectorios, y devuelva los resultados correspondientes.

Aquí en el foro hay varios ejemplos de funciones que hacen ese
tipo de funcionalidad.
Buena dia, gracias por tu respuesta.
Entiendo tu referencias y te comento que ciertamente los he visto, pero debido a mis pocas habilidades para el manejo de ficheros no logro hacer que funcione de tal modo que recorra directorios y subdirectorios.

Me podras ayudar con respecto a este codigo?
Código PHP:
<?php

function buscar($dir,&$archivo_buscar
{   
     if ( 
is_dir($dir) ) 
     { 
          
          
$d=opendir($dir);  
          while( 
$archivo readdir($d) ) 
          { 
            if ( 
$archivo!="." AND $archivo!=".."  
            { 
                  
                 if ( 
is_file($dir.'/'.$archivo) ) 
                 { 
                       
                      if ( 
$archivo == $archivo_buscar  
                      { 
                           return (
$dir.'/'.$archivo); 
                    } 
                     
                } 
                  
                if ( 
is_dir($dir.'/'.$archivo) ) 
                { 
                     
$r=buscar($dir.'/'.$archivo,$archivo_buscar); 
                     if ( 
basename($r) == $archivo_buscar 
                     { 
                          return 
$r
                    } 
                      
                      
                } 
                   
                   
                 
                  
                  
            } 
                   
        } 
                   
    } 
    return 
FALSE


$archivo='yo.jpg'

echo 
buscar('./carpeta' ,$archivo);
  #8 (permalink)  
Antiguo 25/11/2015, 15:02
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Consejo para buscador de archivos

Saludo.
Bueno, pues ese código encuentra la primera coincidencia y la retorna,
en cuyo caso sirve pero no a totalidad para lo que se quiere.

Propongo manejar un arreglo para las n coincidencias (Inicializar $ret =array() antes del primer if,
así entonces en el primer return hacer esto

Código PHP:
Ver original
  1. $ret[] = ($dir.'/'.$archivo);

Luego, en el if que comprueba is_dir, no usar el if interno y su contenido,
y solo dejar esto

Código PHP:
Ver original
  1. $ret[]=buscar($dir.'/'.$archivo,$archivo_buscar);

Y finalmente, en vez de hacer return false en la parte final, retornar el arreglo.
Código PHP:
Ver original
  1. return $ret;

Esto en cuanto a la función, y a la hora de invocar a la función,
el echo ya no se usaría directamente pues daría problemas
de conversión de array a string, por ende, se asignaría a una variable
lo que retorne esta función, y luego se recorrería con un for puede ser.

Código PHP:
Ver original
  1. $ret = buscar('laruta' ,$archivo);
  2.     echo 'Se encontraron '.sizeof($ret).' coincidencias</br>';
  3.     for($i = 0; $i < sizeof($ret); $i++)
  4.     {
  5.         if( $i == (sizeof($ret)-1))
  6.             echo $ret[$i].'</br>';
  7.         else
  8.         {
  9.             if(!empty($ret[$i]))
  10.                 echo $ret[$i][0].'</br>';
  11.         }
  12.     }

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 25/11/2015 a las 15:15
  #9 (permalink)  
Antiguo 26/11/2015, 17:11
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Consejo para buscador de archivos

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo.
Bueno, pues ese código encuentra la primera coincidencia y la retorna,
en cuyo caso sirve pero no a totalidad para lo que se quiere.

Propongo manejar un arreglo para las n coincidencias (Inicializar $ret =array() antes del primer if,
así entonces en el primer return hacer esto

Código PHP:
Ver original
  1. $ret[] = ($dir.'/'.$archivo);

Luego, en el if que comprueba is_dir, no usar el if interno y su contenido,
y solo dejar esto

Código PHP:
Ver original
  1. $ret[]=buscar($dir.'/'.$archivo,$archivo_buscar);

Y finalmente, en vez de hacer return false en la parte final, retornar el arreglo.
Código PHP:
Ver original
  1. return $ret;

Esto en cuanto a la función, y a la hora de invocar a la función,
el echo ya no se usaría directamente pues daría problemas
de conversión de array a string, por ende, se asignaría a una variable
lo que retorne esta función, y luego se recorrería con un for puede ser.

Código PHP:
Ver original
  1. $ret = buscar('laruta' ,$archivo);
  2.     echo 'Se encontraron '.sizeof($ret).' coincidencias</br>';
  3.     for($i = 0; $i < sizeof($ret); $i++)
  4.     {
  5.         if( $i == (sizeof($ret)-1))
  6.             echo $ret[$i].'</br>';
  7.         else
  8.         {
  9.             if(!empty($ret[$i]))
  10.                 echo $ret[$i][0].'</br>';
  11.         }
  12.     }

Hola que tal mortiprogramador me he topado con una funcion recursiva que hace lo que requiero.
Ahora tengo problemas con ella para ingresar el nombre del archivo a buscar desde un formulario, me podrias ayudar?

hago lo siguiente
Código PHP:

<form action="miarchivo.php" method="post" >
<
input type"text" name"busca"/>
<
input type"submit"/>
</
form>

class 
FileExtensionFilter extends FilterIterator
{
    protected 
$archivos $_POST['busca'];
    public function 
accept() {
        return 
in_array($this->getFilename(), $this->archivos);
    }
}
if(isset(
$_POST['busca'] ))    
{
$directorio = new RecursiveDirectoryIterator("/mi/directorio");
$recursive = new RecursiveIteratorIterator($directorio);
$filtrado = new FileExtensionFilter($recursive);
foreach (
$filtrado as $archivo) {
    echo 
$archivo PHP_EOL;
}

y me devuelve error en la linea: " protected $archivos =$_POST['busca']; "
El error dice unexpected '$_POST' (T_VARIABLE) y no se de que forma recibirlo de manera correcta en mi PHP

GRACIAS
  #10 (permalink)  
Antiguo 26/11/2015, 19:35
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Consejo para buscador de archivos

Saludo.
Eso es porque la variable de post no es válida en el ámbito de la clase,
Para esto podrías por ej, crear un método que reciba un parámetro
para darle valor a la variable de la clase, y llamarlo antes del foreach
enviandole como valor lo que llega por post.

__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #11 (permalink)  
Antiguo 26/11/2015, 22:34
 
Fecha de Ingreso: noviembre-2015
Mensajes: 29
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Consejo para buscador de archivos

Cita:
Iniciado por mortiprogramador Ver Mensaje
Saludo.
Eso es porque la variable de post no es válida en el ámbito de la clase,
Para esto podrías por ej, crear un método que reciba un parámetro
para darle valor a la variable de la clase, y llamarlo antes del foreach
enviandole como valor lo que llega por post.

Hola que tal, no tengo muy claro como crear el metodo como me lo indicas. Crees que puedas darme un ejemplo?

Gracias
  #12 (permalink)  
Antiguo 27/11/2015, 05:16
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Consejo para buscador de archivos

Saludo
Sería algo así:

Código PHP:
Ver original
  1. function setArchivos($valor)
  2. {
  3.     $this->archivos = $valor;
  4. }

Y al llamarla

Código PHP:
Ver original
  1. $filtrado->setArchivos($_POST['busca']);
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: buscador, directorios
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 21:53.