Comunidad de diseño web y desarrollo en internet online

Leer archivos de una carpeta con php

Citar            
MensajeEscrito el 10 Dic 2008 04:01 pm
Buenas gente. quiciera saber como puedo leer lo que tengo en una carpeta y luego cargarlo en flash. si alguien sabe como... le agradezco de antemano. Saludos

Por Freeki

Claber

183 de clabLevel



Genero:Masculino  

Desarrollador Web Uy

firefox
Citar            
MensajeEscrito el 10 Dic 2008 04:02 pm
encontré esta función para el php.. pero como para mi es chino.. no tengo idea

Código :

<?php
$dir = 'miCarpeta';

// Abrir un directorio conocido, y proceder a leer sus contenidos
if (is_dir($dir)) {
if ($gd = opendir($dir)) {
while ($archivo = readdir($gd)) {
echo "nombre de archivo: $archivo : tipo de archivo: " . filetype($dir . $archivo) . "\n";
}
closedir($gd);
}
}
?>

Por Freeki

Claber

183 de clabLevel



Genero:Masculino  

Desarrollador Web Uy

firefox
Citar            
MensajeEscrito el 10 Dic 2008 04:39 pm
Hola bueno, yo tengo una web donde hago eso, con un script de servidor en phph y lo vinculo a flash atraves de XML, entonces publico aqui mis scripts.

ListXMLDir.php


Código :

<?php
/*===============================
  - Based in Class: File2XML
  - Author: Huynh Hai Huynh
  - Email: [email protected]
  - Website: http://www.php.net.vn
  - Modify by: Ricardo de la Luz
===============================*/

class ListXMLDir
{

   var $folder_read;

   var $folder_write;

   var $xml_write;

   var $ext_read = array();

   var $file_in =  array();

   var $time_limit;

   var $size_limit;

   function listfile()
   {

   $file_in = array();

    if ($handle = @opendir($this->folder_read))
    {
    while (false !== ($file = readdir($handle)))
    {
        if ($file != "." && $file != "..")
        {

             if (is_file($this->folder_read."/".$file))
             {


               $mfile = explode(".",$file);


               $f_size = filesize($this->folder_read."/".$file);

               $ext = $mfile[count($mfile)-1];



               if (count($mfile)==1 and in_array("NULL",$this->ext_read) and ($f_size <= $this->size_limit))
               {
                 $file_in[] .= $file;
               }
               elseif (in_array(strtolower($ext),$this->ext_read) and ($f_size <= $this->size_limit))
               {
                 $file_in[] .= $file;
               }

             }

        }
    }
    closedir($handle);

    $this->file_in  = $file_in;

    $this->dumpxml();

    }
    else die("<info><mensaje>No se puede leer el folder: ". $this->folder_read ."</mensaje></info>" );

   }

   function dumpxml()
   {
          // SET time excute
          ini_set("max_execution_time",$this->time_limit);

          // Create XML struc
          $dom = new DOMDocument('1.0', 'iso-8859-1');

          $element = $dom->appendChild(new DOMElement('info'));

          $is=0;

          $total = array();

          foreach ($this->file_in as $fl)

          {

           $fl_full = $this->folder_read.$fl;
   
           $element_conv_file       =    $element->appendChild(new DOMElement('item' . $is));
   
           $element_conv_file_name    =    new DOMElement('file_name', $fl);
           $element_conv_file_size    =    new DOMElement('file_size', @filesize($fl_full));
           
           $element_conv_file -> appendChild($element_conv_file_name);
           $element_conv_file -> appendChild($element_conv_file_size);
           
           if ($img_dim = getimagesize($fl_full)) 
           {
            $element_conv_file_imgsize =   $dom->createElement('file_imageSize');
            $element_conv_file_imgsize -> appendChild( new DOMElement('width', $img_dim[0]) );
            $element_conv_file_imgsize -> appendChild( new DOMElement('height', $img_dim[1]) );
            $element_conv_file -> appendChild($element_conv_file_imgsize);
           }
           
           $is++;

          }
        
        if( $this->xml_write != "" && isset($this->xml_write) )
        {
             $handle_w = fopen($this->folder_save."/".$this->xml_write, "w+");
             fclose($handle_w);
             $dom->save($this->folder_save."/".$this->xml_write);
        }
        echo $dom->saveXML();
   }
}

?>


Ese script lo consegui y lo modifique para lo que necesitaba, es una clase que renombre como ListXMLDir, y la ubique en un path masomenos asi localhost/MCF/CLASES, ahora el script que hace uso de esta clase

MapeoSitios.php


Código :

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/MCF/CLASES/ListXMLDir.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/MCF/CLASES/Sitios.php");

if( isset( $_GET['idSitio'] ) && isset( $_GET['accion'] ) ) 
{
   $sitio = new Sitios;
   $sitio->idSitio = $_GET['idSitio'];
   $sitio->idSeccion = "";
   $accion = $_GET['accion'];
   
   $k = new ListXMLDir;
   $k->time_limit  = "600";
   $k->size_limit = "500000000";
   
   if($accion == 'S')
   {
      $k->folder_read = $sitio->getSRCPath();
      //$k->folder_save = $sitio->getXMLPath();
      //$k->xml_write   = $sitio->getXMLIMGsName();
      $k->ext_read    = $sitio->getExts();   
   }
   elseif($accion == 'P')
   {
      $k->folder_read = $sitio->getPLNPath();
      //$k->folder_save = $sitio->getPLNPath();


      //$k->xml_write   = $sitio->getXMLPLNsName();
      $k->ext_read    = array("swf");
   }
   echo $k->listfile();
}
?>


Bueno, yo utilizo este script para mapear una carpeta que esta en algun sitio considerado por idSitio y idSeccion, mi objeto Sitios va a la base de datos y da las direcciones de las carpetas que se van a mapear, pero puedes sustitur esa direccion en las variables $k->folder_read = "/CARPETALECTURA", ok, bueno, el flash es un poco mas complejo, entonces te voy a poner una version simplificada:

Código :

var amigo:XML = new XML();
amigo.ignoreWhite = true;
amigo.onLoad = function(success) {
    trace(amigo);
};
amigo.load("http://localhost/MCF/MapeoSitios.php?idSitio=1&accion=P");


http://localhost/MCF/MapeoSitios.php?idSitio=1&accion=P esa es una direccion que en un caso hipotetico esta ubicada en el root de un localhost en una carpeta llamada MCF y recibe variables get que son compatibles con mi script, entonces te pongo aqui el codigo sin depender de esos parametros, solo puse el anterior para que des un ejemplo de como usar un mapeador de carpetas.

MapeoSitios.php


Código :

<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/MCF/CLASES/ListXMLDir.php");

$k = new ListXMLDir;
$k->time_limit  = "600";
$k->size_limit = "500000000";

$k->folder_read = $_SERVER['DOCUMENT_ROOT'] . "/MCF/READ/";
$k->folder_save = $_SERVER['DOCUMENT_ROOT'] . "/MCF/SAVE/";
$k->xml_write   = "SAVE.xml";
$k->ext_read    = array( "jpg", "jpeg", "jpe", "gif", "png" );
echo $k->listfile();
}
?>


la variable $k->folder_read, representa la ruta de la carpeta que sera mapeada, $k->folder_save, representa la ruta de la carpeta en donde se guarda una copa del XML que recibes, osea el XML, aparte de traerlo a Flash en un XML, ese mismo XML se guarda en una carpeta, si no quieres esa funcionalidad, comenta esas lineas usando //, $k->xml_write es el nombre del XML que se va a escribir, como te mencione si no quieres esa funcionalidad, solo comenta esas lineas, y $k->ext_read es un array que representa las extenciones de los archivos que quieres mapear, y por ultimo $k->time_limit y $k->size_limit, son restricciones, por si la carpeta a mapear es muy grande, el script puede alentar el servidor, entonces da un tiempo limite y un tamaño de lecutra limite. siendo este el nuevo archivo, desde flash puedes mapear esa carpeta modificando esta linea

Código :

amigo.load("http://localhost/MCF/MapeoSitios.php");


Espero te quede claro y no te confunda, suerte.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 11 Dic 2008 07:51 pm
Hola LongeVie!.. muchas gracias por la ayuda y por tu tiempo.. creo que me va a ser de mucha ayuda.. me voy a tomar mi tiempo para leerlo y estudiarlo porque hasta ahora solo veo 焀 甀 攀 戀 甀 猀 挀 :lol::lol: ..pero va a salir.. eso espero, gracias de nuevo. saludos.

Por Freeki

Claber

183 de clabLevel



Genero:Masculino  

Desarrollador Web Uy

firefox
Citar            
MensajeEscrito el 12 Dic 2008 05:59 pm
HEY.. LongeVie.. no me podrías explicar un poquito tu código?? :wink:

Por Freeki

Claber

183 de clabLevel



Genero:Masculino  

Desarrollador Web Uy

firefox
Citar            
MensajeEscrito el 12 Dic 2008 08:06 pm
claro amigo, bueno, grossomodo, creamos una clase, que no es necesario moverle ni analisar lo que hace ListXMLDir.php, solo tenemos que saber que va a una carpeta, revisa los archivos que hay, del tipo del array de extenciones permitidas y los lista en un xml asi mismo ese xml lo escribe en un archivo en el servidor e la carpeta indicada, es en MapeoSitios.php en donde creas una instancia de la clase ListXMLDir, esa instancia sera la que maneje el mapeo de la carpeta, solo le pasamos unos parametros y con echo $k->listfile(); obtenemos el XML de la lista de archivos, con esta estrucutra:
<info>
<item0>
<file_name>img.png<file_name>
<file_size>568382</file_size>
<file_imageSize>
<width>450</width>
<height>500</height>
</file_imageSize>
</item0>
<item1>
<file_name>algo.swf</file_name>
<file_size>568382</file_size>
</item1>
</info>

entonces eso es lo que flash cacha con XML.load.

si tienes alguna otra duda, dime porfavor.

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.