Comunidad de diseño web y desarrollo en internet online

Ayuda con xml y php

Citar            
MensajeEscrito el 20 Jun 2012 11:29 pm
Hola amigos tengo una pega, aver si me pudierais ayudar.

Coji este codigo vuestro para subir archivos al servidor.
Y no se como debo cambiarlo para que en el data_mc me muestre nada mas que el ultimo archivo que se sube al servidor y no toda la lista de archivos que hay dentro de esa carpeta.

Código ActionScript :

import flash.net.FileReference;
var fileUpload:FileReference = new FileReference();
var path:String = "/dir"
var escucha:Object = {};
var fileTypes:Array;
var getFile:String;
function init() {
   System.security.allowDomain(path);
   load_mc._visible = false;
   fileTypes = [{description:"Archivos de Imagen", extension:"*.jpg;*.gif;*jpeg;*.png", macType:"JPEG;jp2_;GIFF"}];
   upload_btn.label = "Upload File";
   down_btn.label = "Download File";
   nombre.text="";
   upload_btn.addEventListener("click", doUpload);
   down_btn.addEventListener("click", doDownload);
   fileUpload.addListener(escucha);
   escucha.onSelect = doSelect;
   escucha.onComplete = doComplete;
   escucha.onCancel = doCancel;
   escucha.onProgress = doProgress;
   data_mc.addEventListener("change", setDownload);
}
function doComplete() {
   load_mc.barra_mc._xscale = 0;
   load_mc.label_txt.text = "Tranferencia Completa";
   makeList();
}
function doProgress(archivo:FileReference, bLoaded:Number, bTotal:Number) {
   var porcentaje = Math.round((bLoaded*100)/bTotal);
   load_mc.label_txt.text = porcentaje+"% del archivo "+archivo.name;
   load_mc.barra_mc._xscale = porcentaje;
}
function doCancel() {
   trace("El Usuario Cancelo");
}
function doSelect(archivo:FileReference) {
   load_mc._visible = true;
   load_mc.barra_mc._xscale = 0;
   fileUpload.upload(path+"/uploadFile.php");
}
function doDownload() {
   if (getFile != undefined) {
      fileUpload.download(path+"/"+getFile);
   }
}
function doUpload(event) {
   fileUpload.browse(fileTypes);
}
function setDownload(c:MovieClip) {
   getFile = c.target.selectedItem.Nombre;
}
function makeList() {
   data_mc.removeAll();
   var list_xml:XML = new XML();
   list_xml.ignoreWhite = true;
   list_xml.load(path+"/lista.php");
   list_xml.onLoad = function() {
      var nodos = this.firstChild.childNodes;
      for (var a in nodos) {
         var size:Number = Math.ceil((nodos[a].attributes.tamanio/1024));
         data_mc.addItem({Nombre:nodos[a].attributes.name, Tamaño:size+" Kb"});
      }
   }
}
init();

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Jun 2012 11:32 pm
Exactamente la funcion makeList es la que quiero cambiar para que solo muestre el ultimo archivo subido al servidor.

Aqui dejo tambien el codigo php.

<?php
$No=array(".","..","lista.php","uploadFile.php","upload.swf","sendform2.php","folletos.html","class.phpmailer.php");
$fp=opendir(".");
echo "<?xml version='1.0' ?".">";
echo "<files>";
while (false!==($file=readdir($fp))){
if ((!in_array($file,$No))){
echo "<file name='".utf8_encode($file)."' tamanio='".filesize($file)."'/>";
}
}
closedir($fp);
echo "</files>";
?>

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Jun 2012 09:01 pm
No guardes todos, arma un array y toma el ultimo

Código ActionScript :

var tmpLista:Object;
 for (var a in nodos) {
         var size:Number = Math.ceil((nodos[a].attributes.tamanio/1024));
         tmpLista = {Nombre:nodos[a].attributes.name, Tamaño:size+" Kb"};
      }
      data_mc.addItem(tmpLista);


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Jun 2012 09:11 pm
Lo siento jorge pero no entiendo mucho como es lo que me dices que haga, puse tu codigo en mi pelicula pero no funciona.

function makeList() {
data_mc.removeAll();
var list_xml:XML = new XML();
list_xml.ignoreWhite = true;
list_xml.load(path+"/lista.php");
list_xml.onLoad = function() {
var nodos = this.firstChild.childNodes;
var tmpLista:Object;
for (var a in nodos) {
var size:Number = Math.ceil((nodos[a].attributes.tamanio/1024));
tmpLista = {Nombre:nodos[a].attributes.name, Tamaño:size+" Kb"};
}
data_mc.addItem(tmpLista);
}
}

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Jun 2012 09:22 pm
Bueno despues de probarlo varias veces en el servidor si que ahora me refleja nada mas que uno,pero al subir el 2 archivo me vuelve a reflejar el primero que subi.

Si quiers pueder hacer la prueba tu mismo, te dejo el link.

http://prueba12.site50.net/dir/folletos.swf

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Jun 2012 09:55 pm
Estoy haciendo pruebas con estos 2 archivos tarjetas02.jpg y folletos.jpg

ejemplo 1:

subo tarjetas02.jpg y sale en pantalla despues subo folletos.jpg y sale este en pantalla, quitando tarjetas02.jpg

ejemplo 2:

subo folletos.jpg y sale en pantalla despues subo tarjetas02.jpg y no se muestra sigue saliendo folletos.jpg


Pregunta??

Porque en el primer ejemplo si funciona pero en el 2 no, sera que lo que hace es mostarmelos por orden alfabetico, por eso el 1 ejemplo funciona bien.

Agradeceria que alguien me ayudara es lo que me falta para poder empezar hacer la web.

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Jun 2012 02:21 am
Recuerda SIEMPRE borrar cache del navegador cuando cambias una versión de swf en el servidor.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Jun 2012 12:17 pm
Jorge borre todo el navegador cache cookies etc etc y nada me pasa lo mismo.

No puedo cojer y mostrar los datos directamente en data_mc sin pasar por la funcion makeList que interactua con php para mostrarme los datos en data_mc.

Por ejemplo cambiando esto:

function doComplete() {
load_mc.barra_mc._xscale = 0;
load_mc.label_txt.text = "Tranferencia Completa";
makeList();

Por ago asi:

function doComplete() {
load_mc.barra_mc._xscale = 0;
load_mc.label_txt.text = "Tranferencia Completa";
data_mc.addItem({Nombre:nodos[a].attributes.name, Tamaño:size+" Kb"});

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Jun 2012 03:37 pm
El tema es que en doComplete ya tienes que haber cargado y parseado el XML, sino la referencia a nodos es nula

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Jun 2012 05:21 pm
Jorge men yo no tengo tanta experiencia en esto..

tengo que pasar necesariamente por todas esas funciones, cargado y parseado de xml, hacer referencia a nodos y el archivo php para que sencillamente cuando le de al boton de subir archivo
me muestre en pantalla el nombre del archivo.

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jun 2012 11:23 pm
Jorge he estado mirando usos del datagrid y como armar arrays, pero no he consegido mucho, estoy atascado.

Por favor si pudieras ayudarme con el tema te lo agradeceria muchisimo.

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2012 07:27 pm
Jorge de nuevo estoy por aki.

He intentado hacerlo asi, pero tampoco me funciona, ayuda plisssssssss.

function makeList() {
data_mc.removeAll();
var list_xml:XML = new XML();
list_xml.ignoreWhite = true;
list_xml.load(path+"/lista.php");
list_xml.onLoad = function() {
var nodos = this.firstChild.childNodes;
var last = nodos[nodos.length()]
var size:Number = Math.ceil((last.attributes.tamanio/1024));
data_mc.addItem({Nombre:last.attributes.name, Tamaño:size+" Kb"});
}
}

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2012 07:28 pm
Prueba

var last = nodos[nodos.length()-1]

Ya que el indice de los arrays comienza en cero

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Jun 2012 07:30 pm
ok voy a probar

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2012 07:34 pm
Nada en los resultados me pone ;

En el campo de nombre nada vacio y en el campo de tamaño me pone NaN.

No habria q hacer algo tambien con el php que interacctua para mostrarse los datos??

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2012 07:43 pm
Este hilo es viejo y muy largo, sintomas de que falta base para el tema.
Primero: mira si recibes algo

Código ActionScript :

var last = nodos[nodos.length()]
trace("Tengo "+nodos.length());
trace("Primer nodo "+ndos[0]);


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Jun 2012 07:50 pm
Recibo lo siguiente:

Tengo undefined
Primer nodo undefined

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2012 07:54 pm
Perdona mi ignorancia, esas lineas las pongo aparte o dentro de la function.

Si es aparte ya te dije lo que recibi y si es dentro de esa function no recibo nada.

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2012 07:57 pm
Entonces lo estas parseando mal, mira si tienes algo

trace(this.firstChild.childNodes)

etc. Si no lo parseas bien tendrás siempre undefined

Jorge

TIP: No me pongas lo que sale en cada trace, intenta ir mas alla y si sale undefined, considerar que no hay nada alli y que seguramente no tienes ChildNodes, etc. Si como dices no tienes el nivel suficiente, pues comienza con algo mas facil (parsear un XML, por ej en http://www.flash-db.com/Tutorials/loading/ ) y si necesitas resolver un tema puntual, abre un hilo nuevo para que te den el codigo en vez de tanto debate

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Jun 2012 08:31 pm
Gracias Jorge por las molestias. Seguire intentandolo.

Por serpy12

15 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Jun 2012 11:51 pm
Jorge lo he conseguido.

Me he basado en la funcion doprogress que te muestra el archivo en pantalla mientras se sube al servidor.

He borrado toda la funcion makeList, archivo php, y todo lo que implicaba el datagrid :).

He hecho un mc y dentro un input text dinamico e incluido esta linea en la funcion docomplete:

load1.mostrar.text = archivo.name;

Ahora xfin me muestra el archivo escojido por el usuario en pantalla sin lio ni leches.

Gracias por toda tu atencion. Un saludo

Por serpy12

15 de clabLevel



 

firefox

 

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