Foros del Web » Programando para Internet » PHP »

Como listar archivos del server en una página ???

Estas en el tema de Como listar archivos del server en una página ??? en el foro de PHP en Foros del Web. Colistero tengo un trabajo por terminar y estoy trabado en lo siguiente. Quisiera saber como se hace esto: Tengo una página con texto normal alojada ...
  #1 (permalink)  
Antiguo 13/02/2004, 02:38
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 201
Antigüedad: 16 años
Puntos: 0
Como listar archivos del server en una página ???

Colistero tengo un trabajo por terminar y estoy trabado en lo siguiente.

Quisiera saber como se hace esto:
Tengo una página con texto normal alojada en un determinado directorio de mi hosting, en el cual tambien tengo algunos archivos de Excel, JPG, y Word, lo que quiero lograr es que debajo del texto me muestre el listado de dichos archivos como enlaces para que los puedan picar y bajarlos y si es posible que no me muestre los dos puntitos ".." para subir un nivel de directorio y tampoco me muestre el propio archivo de la página (p.e: ejemplo.php) es decir quedaria algo así: (La idea es que sea interactivi, si subo un archivo nuevo o lo borro esto se refleje de inmediato en el listado)


Aqui iria todo el texto que yo quisiera
bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla, bla, bla, bla, bla, bla,
bla, bla, bla, bla, bla, bla, bla, bla,

Archivos disponibles para bajar, click sobre
ellos o con el botón derecho "grabar como" y
eliga una carpeta en su disco duro local:

planilla.xls
balance.doc
foto.jpg
balance.doc

Desde ya muchas gracias a quien pueda orientarme o ayudarme pues estoy medio perdido con este trabajo, nunca hice algo parecido. GRACIAS !!! :)
__________________
:) Fernando Dichiera (:
[email protected]
  #2 (permalink)  
Antiguo 13/02/2004, 02:41
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

www.php.net/dir

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 13/02/2004, 21:26
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 201
Antigüedad: 16 años
Puntos: 0
De acuerdo alguien tiene algun ejemplo ???

Si alguien tienen algo parecido para ver como funciona o como se implementa estaria muy agradecido !!!
__________________
:) Fernando Dichiera (:
[email protected]
  #4 (permalink)  
Antiguo 13/02/2004, 21:56
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 15 años
Puntos: 0
Prueba el mio

Puedes probar mi scrip que hce exactamente eso e esta direccion...UMF_PHP ver 0.3
NOtese que esta es una version beta por lo que le faltan ciertas cositas (seguridad por ejemplo .... YA LO SE CLUSTER aun no lo he arreglado pero pronto..) y otras cosas, ademas de listar los ficheros de un servidor, te permite subirlos, borrarlos, caliicarlos y ponerles comentrios....

logeate con....

Username: LALA
password: pass

ya me contaras...


Posdata: Si subes algun archivo que no sea mayor de 400kb, lycos no permite mas de eso....
__________________
Siempre hay algo nuevo que aprender

Última edición por HIa; 13/02/2004 a las 22:00
  #5 (permalink)  
Antiguo 13/02/2004, 22:41
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 201
Antigüedad: 16 años
Puntos: 0
Gracias HIa por el aporte !!!

Es muy parecido a lo que quiero hacer, realmente me sirviria de mucho el poder saber como lo has echo, si tienes algo del codigo o quieres explicarme como lograrlo te estaria muy agradecido.

Desde ya muchas gracias por el aporte !!!
__________________
:) Fernando Dichiera (:
[email protected]
  #6 (permalink)  
Antiguo 14/02/2004, 02:06
 
Fecha de Ingreso: febrero-2004
Mensajes: 221
Antigüedad: 13 años, 9 meses
Puntos: 0
seguro que lo hizo buscando algun ejemplo / documento en internet, en ves de venir aca y preguntar 200 cosas
__________________
Guillermo Rauch
Freelancer
  #7 (permalink)  
Antiguo 14/02/2004, 11:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Appletalk .. los comentarios personales por favor en privado (y si ahora no funciona el sistema de MP del foro .. localiza al implicado por otros médios y le haces saber tu parecer)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 14/02/2004, 22:54
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 15 años
Puntos: 0
Mnnnnnnn

Bueno Appletalk , en realidad la unida documentacion que necesite fue la de php.net y lo otro pues si hice un par de preguntas en el foro sobre como hacer algo, el codigo es 100% mio (varias horas de dolores de cabeza.....)

Por lo otro fermdp ya me hare un pequeño tutorial vamos a ver si me dejan en zonaphp
__________________
Siempre hay algo nuevo que aprender
  #9 (permalink)  
Antiguo 15/02/2004, 18:33
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 201
Antigüedad: 16 años
Puntos: 0
Lo consegui.....pero ...

Gracias HIa por tu aporte, estare esperando por ese tutorial, solo avisame cuando lo tengas, para compartirlo en el foro.

Bueno, tras buscar ejemplo, leer php.net y tras varias pruebas y ERRORES lo logre, no se si es la forma correcta pero por lo menos funciona como yo quiero, solo le pido dos cosillas, si alguien tiene la bondad de mirar el code y decirme si esta bien o es una animalado lo que he echo y tambien si alguien sabe la forma de evitar que al listarme los archivos me muestre tambien los "." y ".." para subir niveles en los directorios que lista ya que lo que he logrado hace lo siguiente, me muestra el contenido de la carpeta en donde esta pa página.php por ejemplo de la siguiente manera:

.
..
archivo.php
archivo.xls
archivo.doc


y yo quiero evitar que se vean los dos primero puntos que llevarian al usuario a poder navegar por otros directorios o carpetas. Espero ser claro con la duda. Si alguien sabe algo para ayudarme se lo agradeceria mucho.

A continuacion en code para lograr esto:

Código PHP:
<?
$path
="./";
$dir=dir($path);
while (
$archivo $dir->read())
{
echo 
"<a href="; echo "$archivo"; echo ">"; echo "$archivo"; echo "</a><br>";
}
$dir->close();
?>
Desde ya muchas gracias.

PD: También estoy biendo la posibilidad de que al lado del nombre del archivo me muestre un icono relacionado a la extension del mismo para que sea mas ilustrativo, es decir si un archivo listado es p.e. archivo.xls al lado de este sale un pequeño icono de excel y haci con todos.
__________________
:) Fernando Dichiera (:
[email protected]
  #10 (permalink)  
Antiguo 15/02/2004, 20:38
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 14 años, 5 meses
Puntos: 2
Extraido de http://www.php-hispano.net/archivos_tmp/56

index.php
Código PHP:
<link rel="stylesheet" type="text/css" href="aspecto.css">
<?
$sizekb 
0.0 ;
$sizemb 0.0 ;
$dir=opendir('.');
while (
$file readdir($dir))

if(
$file != "index.php" AND $file != "aspecto2.css" AND $file != "." AND $file != "..") {
  {
   if((
filesize($file) < 1024) AND (filesize($file) > 1)){ $sizekb filesize($file);
   echo
"<a href=\"$file\">&nbsp;$file</a> @ $sizekb bytes<br>"; }
   if((
filesize($file) > 1024) AND (filesize($file) < 1024000)){ $sizekb round(filesize($file)/1024,2);
   echo
"<a href=\"$file\">&nbsp;$file</a> @ $sizekb Kb<br>"; }
   if(
filesize($file) > 1024000){ $sizekb round(filesize($file)/1024000,2);
   echo
"<a href=\"$file\">&nbsp;$file</a> @ $sizekb Mb<br>"; }
  }
}
}
closedir($dir) ;
?>
aspecto.css

Código PHP:
body {
    
font-familyVerdanaHelveticasans-serif;
    
font-size11px;
    
color#CCCCCC;
}
a:link {
    
color#666666;
    
text-decorationnone;
}
a:visited {
    
color#666666;
    
text-decorationnone;
}
a:hover {
    
color#000000;
    
text-decorationnone;
}
a:active {
    
color#666666;
    
text-decorationnone;


Listador de archivos de un directorio.

Simple y pequeño script php (sin mysql) con el cual puedes listar todos los archivos de los
directorios de tu FTP.

Instalación:
Solo tienes que subir el index.php y el aspecto.css al directorio correspondiente y
ya esta listo.



Script realizado por box, con la ayuda de algunos diseñadores/programadores conocidos; de
libre distribución

http://box.factoryred.com/

No se si te sirva pero espero te ayude a lo que mas o menos quieres usar
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #11 (permalink)  
Antiguo 16/02/2004, 16:37
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 201
Antigüedad: 16 años
Puntos: 0
lo consegui !!!

El logrado hacer lo que queria, listar los archivos de un directorio, sin que aparezcan "." y ".." o en archivo de la misma page en donde esta este code y que a la vez me muestre el listado con vinculos a los mismos y a su vez tambien tenga un icono al lado del mismo correspondiente a la extension de cada archivo, por lo que hay que tener los iconos como gif con el nombre de las extensiones. Por ejemplo gif.gif, jpg.gif, pdf.gif, xls.gif, estos gif tiene los dibujitos de los iconos de estas aplicaciones y estan en una carpeta ../images en un nivel superior del que esta la pagina. A continuacion el codigo, que no se si es el mejor o esta lleno de errores, pero FUNCIONA

Código PHP:
<?
<link rel="stylesheet" type="text/css" href="../images/aspecto.css">
            <?
$sizekb 0.0 ;
$sizemb 0.0 ;
$dir=opendir('.');
while (
$file readdir($dir))

if(
$file != "index.php" AND $file != "aspecto.css" AND $file != "." AND $file != "..") {
  {
   if((
filesize($file) < 1024) AND (filesize($file) > 1)){ $sizekb filesize($file);
   echo 
"<img src=\"../images/"; echo substr ("$file",-3); echo ".gif\" align=\"absmiddle\">"; echo "<a href=\"$file\">&nbsp;$file</a> ,tama&ntilde;o $sizekb bytes<br><br>"; }
   if((
filesize($file) > 1024) AND (filesize($file) < 1024000)){ $sizekb round(filesize($file)/1024,2);
   echo 
"<img src=\"../images/"; echo substr ("$file",-3); echo ".gif\" align=\"absmiddle\">"; echo "<a href=\"$file\">&nbsp;$file</a> ,tama&ntilde;o $sizekb Kb<br><br>"; }
   if(
filesize($file) > 1024000){ $sizekb round(filesize($file)/1024000,2);
   echo 
"<img src=\"../images/"; echo substr ("$file",-3); echo ".gif\" align=\"absmiddle\">"; echo "<a href=\"$file\">&nbsp;$file</a> ,tama&ntilde;o $sizekb Mb<br><br>"; }
  }
}
}
closedir($dir) ;
?>
Si alquien quiere probarlo y me dice que le parece ???

Desde ya gracias por todo
__________________
:) Fernando Dichiera (:
[email protected]

Última edición por fermdp; 16/02/2004 a las 16:43
  #12 (permalink)  
Antiguo 17/02/2004, 03:07
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

No lo he probado, pero el estilo de programacion no me gusta. Mucho if, mucha repeticion de codigo, poca extensibilidad y mantenimiento.

Por ejemplo, con un array podrias sustituir el if de los ficheros con un simple in_array(), y añadir otro fichero para excluir seria simplemente añadir un elemento al array.

Y esos 3 if para ejecutar el mismo codigo, me parece innecesario. El if es para separar lo comun de lo no-comun. Tal como esta tu codigo, no lo separas. Si en el futuro en lugar de un gif quieres usar un png para el icono, debes cambiar 3 lineas (3 oportunidades para equivocarte). Podrias usar una funcion para mostrar el mensaje del tamaño, y meter hay el if del tamaño. Luego el codigo de dentro del while solo seria una linea que muestra la imagen, el link y el mensaje del tamaño devuelto por una funcion:
Código PHP:
echo "<img src=\"../images/"; echo substr ("$file",-3); echo ".gif\" align=\"absmiddle\">"; echo "<a href=\"$file\">&nbsp;$file</a> ,tama&ntilde;o ".tam_file(filesize($file))."<br><br>"
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 17/02/2004, 05:51
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 15 años
Puntos: 0
Estoy de acuerdo con lo que dice josemi, un poco mas de claridad ayudaria montones, menos if tal vez por ejemplo aqui esta parte del codigo que yo use:

Código PHP:
while ($file readdir($handle)){ // 15
     
$file strtolower($file);
     
$extencion explode("."$file);
     
$extencion end($extencion);
     
$tama = (filesize("$path/$file"));
     
// Filtra para sumar solo los archivos permitidos ocultando asi los demas archivos "No permitidos" de la vista del usuario
    
if (in_array($extencion$permitidos)){
         
$tama_total $tama $tama_total;
         }
    
     if (
$tama >= 1073741824){
         
$tama round($tama 1073741824 100) / 100 " " "GB";
         }else if (
$tama >= 1048576){
         
$tama round($tama 1048576 100) / 100 " " "MB";
         }else if (
$tama >= 1024){
         
$tama round($tama 1024 100) / 100 " " "KB";
         }else{
         
$tama $tama " " "b";
         }
    
     
$modi date("j.n.Y"filemtime("$path/$file")); //Hora en formato Día - Mes
     
if ((@file_exists("$path/$file")) and (!is_dir("$path/$file"))){
         if (
in_array($extencion$permitidos)){
//Bueno aqui muestro <img src="$extencion.gif><a href = "$file") o no se que mas
             
}
}
close($file); 

Notese que el array $permitidos es del tipo
Código PHP:
$permitidos = array ("gif","jpg","bmp",html","css".....); 
lo que nos permite evitar que la gente vea cosas que no estan dentro de lo permitido.....
es incompleto pero te da otra forma de verlo
__________________
Siempre hay algo nuevo que aprender

Última edición por HIa; 17/02/2004 a las 05:59
  #14 (permalink)  
Antiguo 17/02/2004, 12:10
 
Fecha de Ingreso: diciembre-2001
Ubicación: Mar del Plata
Mensajes: 201
Antigüedad: 16 años
Puntos: 0
Muchas gracias, voy a tratar de implementar sus sugerencias y a la vez aprender, tratando de entender el codigo y como trabaja PHP, pues de eso se trata no de copiar lineas sino de interpretar como funciona. MUCHISIMAS GRACIAS A TODOS.!!! ;) Cuando tenga listo esta pagina les muestro el codigo y les dijo como rula.
__________________
:) Fernando Dichiera (:
[email protected]
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:18.