Comunidad de diseño web y desarrollo en internet online

FileReference y URLRequest ¿No admite servidores externos?

Citar            
MensajeEscrito el 01 Abr 2009 10:26 pm
Buenas, estaba retomando el flash (Que no tocaba desde hace años) y quería hacer un downloader en flash para descargar archivos y tal dado un parámetro que es una url.

De momento estaba probando poniendo la dirección en el propio código para probar y me he encontrado con un detalle, solo soy capaz de descargar cosas del mismo servidor en el que está colgado el swf.
Si esta en algo.com solo lo que se encuentre ahí, pero del resto no.

Hay alguna limitación respecto a esto en FileReference y URLRequest.

Aquí el código AS3:

Código :

import flash.events.*;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.text.TextField;

var Down:FileReference;
var FileReq:URLRequest;

this.DownBtn.addEventListener(MouseEvent.CLICK,DownBtnFunc);

function DownBtnFunc(evento:MouseEvent):void
{
   Download("http://www.iaitor.es/index.php","El_Index_De_iAitor.html");
}

function Download(FileUrl:String,FileName:String=null):void
{
   FileReq = new URLRequest();
   FileReq.url = FileUrl;
   Down = new FileReference();
   Handlers(Down);
   Down.download(FileReq,FileName);
}

function Handlers(disp:IEventDispatcher):void
{
   disp.addEventListener(Event.OPEN, openHandler);
   disp.addEventListener(Event.COMPLETE, completeHandler);
   disp.addEventListener(ProgressEvent.PROGRESS, progressHandler);
   disp.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}

function openHandler(evento:Event):void
{
   this.DownBtn.label = "Cancelar";
}

function completeHandler(evento:Event):void
{
   this.DownBtn.label = "Descargar";
}

function ioErrorHandler(evento:IOErrorEvent):void
{
   this.StatusTxT.text = "Error. Intentelo de nuevo";
   Down.cancel();
}

function progressHandler(evento:ProgressEvent):void
{
   var loaded = evento.bytesLoaded;
   var total = evento.bytesTotal;

   // Hack para que el tamaño descargado no sea mayor que el total
   if (evento.bytesLoaded > evento.bytesTotal) {
      loaded = total;
   }

   var percent = (loaded * 100) / total;

   if (loaded >= 1024) {
      loaded = (loaded / 1024) + " kB";
   } else if (loaded >= (1024*1024)) {
      loaded = (loaded / (1024*1024)) + " MB";
   } else {
      loaded = loaded + " B";
   }

   if (total >= 1024) {
      total = (total / 1024) + " kB";
   } else if (total >= (1024*1024)) {
      total = (total / (1024*1024)) + " MB";
   } else {
      total = total + " B";
   }

   this.StatusTxt.text = percent + "% / " + Math.round(loaded) + " de " + Math.round(total);
}


Ejemplo con un archivo externo a mi servidor (skg.eien-no-ai-net):


Ejemplo con un archivo alojado en mi servidor:


Saludos y gracias por adelantado

Por [SkG]

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Abr 2009 10:29 pm
Burrada a parte la del redondear los valores con el MB, kB, B...

Por [SkG]

10 de clabLevel



 

firefox
Citar            
MensajeEscrito el 02 Abr 2009 02:02 pm
La limitación es la misma que para cargar pelis o datos, si tienes que usar un servidor externo necesitas tener un crossdomain.xml que autorice a cargar (o descargar en tu caso) archivos del servidor. Las políticas de seguridad fueron cambiando con las versiones de los players, pero aquí tienes la última: http://www.adobe.com/devnet/flashplayer/articles/fplayer10_security_changes.html
Igual para hacer una simple descarga, yo usaría simplemente un lenguaje de back-end para forzar la descarga al ser llamado desde Flash en vez de montar todo el tinglado con FileReference

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Abr 2009 06:09 pm
Ya la cosa esta en tema ancho de banda, son archivos grandes, y tengo dos servidores por esa razón quiero poderlo hacer con flash así solo tira del ancho de banda del que me interesa y no de uno y luego del otro como ocurriría haciéndolo con php y si pongo el link directo en ciertos archivos se abren con el explorador.

Saludos y gracias por la respuesta.

Por [SkG]

10 de clabLevel



 

firefox

 

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