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.