Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: WHK en 17 Abril 2011, 22:10 pm



Título: (flash) FileReference browser dentro de un ExternalInterface
Publicado por: WHK en 17 Abril 2011, 22:10 pm
Hola, estaba haciendo una pequeña aplicación donde me permita subir archivos con progreso pero manipulado completamente desde javascript utilizando ExternalInterface y hasta el momento todo va bién pero al intentar llamar browser() no me funciona.

Intenté debuggearlo y si se ejecuta bién la función llamada desde el exterior pero esa función en particular no hace nada.

Si lo llamo desde una función interna haciendole click a lo que sea ahi si funciona bién.

Será algún metodo de seguridad nativa o algo por el estilo?

por lo menos si me deja enviar el archivo desde ExternalInterface.

Código
  1. import flash.net.FileReference;
  2. import flash.external.ExternalInterface;
  3.  
  4. var arrTypes:Array = new Array();
  5. var objTypes:Object = new Object();
  6. objTypes.description = "Todos los archivos";
  7. objTypes.extension = "*";
  8.  
  9. arrTypes.push(objTypes);
  10.  
  11. var listUpload:Object = new Object();
  12. var fileUpload:FileReference = new FileReference();
  13. fileUpload.addListener(listUpload);
  14.  
  15. function buscarFL(){
  16. /* No funciona */
  17. fileUpload.browse(arrTypes);
  18. }
  19.  
  20. function subirFL(){
  21. fileUpload.upload(_root.uploadfile);
  22. }
  23.  
  24. ExternalInterface.addCallback("buscarFL", this, buscarFL);
  25. ExternalInterface.addCallback("subirFL", this, subirFL);
  26.  
  27. btbrowse.onRelease = function() {
  28. /* Si funciona */
  29. fileUpload.browse(arrTypes);
  30. }
  31.  
  32. listUpload.onSelect = function(file) {
  33. ExternalInterface.call("seleccionado", file.name);
  34. }
  35.  
  36. listUpload.onProgress = function(file, bytesLoaded, bytesTotal):Void {
  37. if(Math.round(bytesLoaded*100/bytesTotal) == 100){
  38. ExternalInterface.call("estado", "Moviendo archivo ...");
  39. }else{
  40. ExternalInterface.call("estado", "Subiendo archivo " + Math.round(bytesLoaded*100/bytesTotal) + "%");
  41. }
  42. }
  43.  
  44. listUpload.onComplete = function(file:FileReference):Void {
  45. ExternalInterface.call("estado", "Archivo subido correctamente");
  46. }