Foros del Web » Programación para mayores de 30 ;) » Programación General »

contenido de un directorio en web

Estas en el tema de contenido de un directorio en web en el foro de Programación General en Foros del Web. Código: opendir (DATABASEDIR, "../htdocs/imagenes/"); my @imagenes = readdir (DATABASEDIR); closedir(DATABASEDIR); Cita: Iniciado por monoswim Pues mejor sería hablarlo en el foro de CGI, con esas ...
  #1 (permalink)  
Antiguo 21/03/2005, 09:38
Avatar de scanjet  
Fecha de Ingreso: diciembre-2002
Ubicación: Tenerife - Islas Canarias
Mensajes: 575
Antigüedad: 21 años, 11 meses
Puntos: 2
contenido de un directorio en web

Código:
opendir (DATABASEDIR, "../htdocs/imagenes/");
my @imagenes = readdir (DATABASEDIR);
closedir(DATABASEDIR);
Cita:
Iniciado por monoswim
Pues mejor sería hablarlo en el foro de CGI, con esas 3 líneas de código creas una variable array que tendrá todos los archivos y subdirectorios del directorio que abriste, en este ejemplo es un directorio de imágenes..

El array es una lista, cada elemenco de la lista en este caso sería un archivo o subdirectorio

Luego para imprimir el contenido puedes hacer
Código:
print "content-type: text/html \n\n";
print "<table>";
foreach my $item (@imagenes){
   print"<tr><td>$item</td></tr>";
}
print "</table>";
con eso imprimes en el navegador una tabla con todo el contenido del directorio...Es un bucle que por cada elemento del array te lo va imprimiendo con el formato de tabla...

Igual faltan 2 detalles, pero mejor hablemos en el foro de CGI y leete de ese FAQ como subir scripts, y para que es el print "content-type: text/html \n\n";

Espero que te sirva
Saludos

Pues como te comente, soy nuevo en esto de CGI y hay cosas que se me escapan, he visto tus tutoriales de PERL y lei en las faq lo que me comentaste, pero como profano me estoy tirando de los pelos sin entender casi nada.

Vamos a ver si me explico algo, quiero saber como colocar el contenido de un directorio al igual que pasa cuando el apache te devuelve el contenido de un directorio, pero quiero hacerlo en una tabla de una web, con su interfaz y todo eso.

Entonces tal como deduzco del ejemplo que me facilitaste y lo que leí sobre script en perl; yo creo en el directorio cgi-bin de mi server un archivo con las líneas que me dijiste??? que coloco en la página dónde quiero mostrar en resultado. Necesita una base de datos, lo digo por el primer ejemplo.

Gracias de nuevo monoswin, espero no hacerte perder mucho en tiempo con mis cosas, Saludos
__________________
El conocimiento no ocupa lugar, pero mi base de datos se desborda...
Estudio SJ - Portal de Noticias y Recursos de Diseño Grafico
  #2 (permalink)  
Antiguo 21/03/2005, 10:00
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Hola ScanJet, ahora te hago un ejemplo en mi servidor local y te lo subo, quedate tranquilo que no me lleva mucho tiempo, La idea es así, en el script tendrás una variable que tiene la uibicación de la carpeta que quieres abrir, con eso el script te la abre y te imprime la tabla que tu quieres...

Ahora bien, para llamar a ese script debes hacer un link a la dirección del script como ser: http://www.dominio.com/cgi-bin/dir_script.pl

Se entiende, ahora en un rato te paso el script...

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 21/03/2005, 11:05
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
acá está el código

Código:
#!usr/bin/perl

use strict;

my $dir = "mdi";

opendir (DATABASEDIR, "$dir");
my @files = readdir (DATABASEDIR);
closedir(DATABASEDIR);
shift @files;
shift @files;

print "content-type: text/html \n\n";
print "<table>";
foreach my $file (@files){
   print"<tr><td>$file</td></tr>\n";
}
print "</table>";

exit(1);
Fijate que la primera línea tiene la ubicación del intérprete de perl, generalmente es esa, pero hay que ver que tu server no tenga otra...

mdi es el nombre de la carpeta que estoy listando...

Espero que te sirva, cualquier duda avisame...
__________________
Esteban Quintana
  #4 (permalink)  
Antiguo 22/03/2005, 03:14
Avatar de scanjet  
Fecha de Ingreso: diciembre-2002
Ubicación: Tenerife - Islas Canarias
Mensajes: 575
Antigüedad: 21 años, 11 meses
Puntos: 2
Bien, he puesto lo que me comentas, he creado el cgi con un editor de texto plano y lo he subido en modo ASCI al directorio de cgi-bin, hago la llamada tal como me comentas al cgi pero me da el siguiente error:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

se te ocurre dónde estoy cometiendo el error?

Gracias
__________________
El conocimiento no ocupa lugar, pero mi base de datos se desborda...
Estudio SJ - Portal de Noticias y Recursos de Diseño Grafico
  #5 (permalink)  
Antiguo 22/03/2005, 07:08
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Le diste permisos de ejecución (chmod 755) ???

Si no el sistema operativo no permite que se ejecute...

Saludos
__________________
Esteban Quintana
  #6 (permalink)  
Antiguo 22/03/2005, 08:11
Avatar de scanjet  
Fecha de Ingreso: diciembre-2002
Ubicación: Tenerife - Islas Canarias
Mensajes: 575
Antigüedad: 21 años, 11 meses
Puntos: 2
le he dado los permisos pero idem ¿?
__________________
El conocimiento no ocupa lugar, pero mi base de datos se desborda...
Estudio SJ - Portal de Noticias y Recursos de Diseño Grafico
  #7 (permalink)  
Antiguo 22/03/2005, 09:12
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
creaste una carpeta en el directorio en donde puseste el script que se llame mdi ?

Porque el script intenta abrir el directorio y al no encontrarlo pude generarte este error...

Deberías agregar esto

En la ínea de open hacer

opendir (DATABASEDIR, "$dir") || &error('abrir','directorio');

y antes del exit crear la función de error

Código:
sub error {

        print "content-type: text/html \n\n";
        print "Error: Cant $_[0] the $_[1]";
        print "<br><br>comunicate con Esteban Quintana";
        exit;
}
o sea que todo quedaría:

Código:
#!usr/bin/perl

use strict;

my $dir = "mdi";

opendir (DATABASEDIR, "$dir") || &error('abrir','directorio');
my @files = readdir (DATABASEDIR);
closedir(DATABASEDIR);
shift @files;
shift @files;

print "content-type: text/html \n\n";
print "<table>";
foreach my $file (@files){
   print"<tr><td>$file</td></tr>\n";
}
print "</table>";

sub error {

        print "content-type: text/html \n\n";
        print "Error: Cant $_[0] the $_[1]";
        print "<br><br>comunicate con Esteban Quintana";
        exit;
}
exit(1);
Prueba con esto

Saludos
__________________
Esteban Quintana
  #8 (permalink)  
Antiguo 22/03/2005, 09:38
Avatar de scanjet  
Fecha de Ingreso: diciembre-2002
Ubicación: Tenerife - Islas Canarias
Mensajes: 575
Antigüedad: 21 años, 11 meses
Puntos: 2
he creado bien la carpeta y puesto el codigo que me facilitas, pero al llamarlo me vuelve a dar el mismo error.

Creo que debe de ser algo tan simple que lo pasas por alto sin darte cuenta,

he revisado todo e igual ¿?
__________________
El conocimiento no ocupa lugar, pero mi base de datos se desborda...
Estudio SJ - Portal de Noticias y Recursos de Diseño Grafico
  #9 (permalink)  
Antiguo 22/03/2005, 10:07
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Yo lo uso en mi servidor y funciona perfectamente...Pregunta en tu servidor si la primera línea que usamos es la dirección exacta de tu intérprete de Perl.

Si no es nada de eso no se que pueda ser, yo en mi local server lo ejecuto sin problemas...

Saludos
PD: Preguntale a tu hosting y sino avisame que lo pruebo yo en mi server de internet...
__________________
Esteban Quintana
  #10 (permalink)  
Antiguo 22/03/2005, 10:49
Avatar de scanjet  
Fecha de Ingreso: diciembre-2002
Ubicación: Tenerife - Islas Canarias
Mensajes: 575
Antigüedad: 21 años, 11 meses
Puntos: 2
lo he mirado en mi cpanel de mi host y la ruta es:

Path to PERL: /usr/bin/perl
__________________
El conocimiento no ocupa lugar, pero mi base de datos se desborda...
Estudio SJ - Portal de Noticias y Recursos de Diseño Grafico
  #11 (permalink)  
Antiguo 22/03/2005, 11:09
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Pues debería de andar...En unas dos horas lo ruebo en mi hosting web (linux) y te digo si funca, en el mio local de windows anda perfecto, y no veo porque no te funciona...

...

Que soquetes que somos, fijate que yo puse #!usr/bin/perl y en tu server dice #!/usr/bin/perl

Hay una barra de menos...jeje

Saludos
PD: Decime si es o no que vuelvo en dos horas y si sigue sin funcar lo pruebo yo
__________________
Esteban Quintana

Última edición por monoswim; 22/03/2005 a las 11:12
  #12 (permalink)  
Antiguo 22/03/2005, 12:37
Avatar de scanjet  
Fecha de Ingreso: diciembre-2002
Ubicación: Tenerife - Islas Canarias
Mensajes: 575
Antigüedad: 21 años, 11 meses
Puntos: 2
PoZi que somos soquetes, jeje, bueno, si era eso;

pero ahora me sale tu error:

Error: Cant abrir the directorio
comunicate con Esteban Quintana

ESTEBANNNNN!!!!!!!!!!!
__________________
El conocimiento no ocupa lugar, pero mi base de datos se desborda...
Estudio SJ - Portal de Noticias y Recursos de Diseño Grafico
  #13 (permalink)  
Antiguo 22/03/2005, 13:32
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
es porque no puede abrir el directorio que le pusiste en la variable dir...Fíjate que le puse

my $dir = "mdi";

con lo cual abrirá en el directorio del script el directorio mdi

Lo creaste ?
Saludos
PD: Probá con mdi/ o algo así...
__________________
Esteban Quintana

Última edición por monoswim; 22/03/2005 a las 13:34
  #14 (permalink)  
Antiguo 23/03/2005, 05:44
Avatar de scanjet  
Fecha de Ingreso: diciembre-2002
Ubicación: Tenerife - Islas Canarias
Mensajes: 575
Antigüedad: 21 años, 11 meses
Puntos: 2
si lo cree, he probado con /mdi/ , /mdi , mdi y /mdi y na (wuaaaaa , wuaaaaa)
__________________
El conocimiento no ocupa lugar, pero mi base de datos se desborda...
Estudio SJ - Portal de Noticias y Recursos de Diseño Grafico
  #15 (permalink)  
Antiguo 23/03/2005, 06:09
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 9 meses
Puntos: 90
Pues mira esta dirección

http://216.32.76.138/~ideariow/cgi-b.../dir_script.pl

lo subí ahí y funciona perfecto !!!

El código exacto es este:

Código:
#!/usr/bin/perl

use strict;

my $dir = "mdi";

opendir (DATABASEDIR, "$dir") || &error('abrir','directorio');
my @files = readdir (DATABASEDIR);
closedir(DATABASEDIR);
shift @files;
shift @files;

print "content-type: text/html \n\n";
print '<table border="2">';
foreach my $file (@files){
   print"<tr><td>$file</td></tr>\n";
}
print "</table>";

sub error {

        print "content-type: text/html \n\n";
        print "Error: Cant $_[0] the $_[1]";
        print "<br><br>comunicate con Esteban Quintana";
        exit;
}
exit(1);
Simplemente lo subi EN MODO ASKII le di permisos de ejecusión CHMOD 755 y le cree la carpeta mdi cargándole un par de archivos...Metete en

http://216.32.76.138/~ideariow/cgi-b.../mdi/gaita.txt

Ahí verás uno de los archivos...

Pues debería de funcionarte...No se que más decirte, podés darme acceso a la carpeta cgi ? oi a alguna subcarpeta que vos designes ?

Saludos
__________________
Esteban Quintana
  #16 (permalink)  
Antiguo 23/03/2005, 10:23
Avatar de scanjet  
Fecha de Ingreso: diciembre-2002
Ubicación: Tenerife - Islas Canarias
Mensajes: 575
Antigüedad: 21 años, 11 meses
Puntos: 2
ok, gracias

ya funciona

sabes, era que la ruta de la carpeta estaba fuera de la que contiene el cgi, entoinces claro, no encontraba dicho directorio, si es que es pa matarme..

De todas maneras no es realmente lo que andaba buscando, pues claro lo que necesitaria seria que los nombres de los archivos linken a su respectivo archivo, como hace lo que comente en un pricipio el apache.

Pero no te preocupes, he encontrado algo parecido en php y funciona.

Gracias por tu dedicación
__________________
El conocimiento no ocupa lugar, pero mi base de datos se desborda...
Estudio SJ - Portal de Noticias y Recursos de Diseño Grafico
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 14:23.