Upload usando apenas FileReference
January 23rd, 2009O amigo Guilherme postou a pouco em meu fórum um dúvida a respeito de upload usando apenas o FileReference, e achei o assunto bacana para ser compartilhado aqui. Já vi muitos amigos e eu usando soluções tão complexas, sendo que existe uma maneira nativa no Actionscript muito simples de realizar uploads de qualquer tipo de arquivo.
Escrevi um classe muito básica para focar na simplicidade que é este processo, porém você pode implementar mais recursos, como registro de evento externamente via EventDispatcher. Vale lembrar que não adiantar escrever em classe e programar como se fosse uma timeline.
Não há muito a ser falado, o método utilizado é o upload() da classe FileReference, linguagens externas serão usadas unicamente para mover o arquivo para a pasta desejada, ou ainda para a manipulação de dimensões, nomes, etc.
package { import flash.net.*; import flash.events.*; public class upLoad { private var fr:FileReference = new FileReference(); private var upUrl:String; private var btn:Object; public function upLoad(obj:Object):void { this.btn = obj.btn; this.upUrl = obj.url; this.initHandler(); } private function initHandler():void { this.btn.addEventListener(MouseEvent.CLICK, startUpload); this.fr.addEventListener(Event.SELECT, selectHandler); this.fr.addEventListener(ProgressEvent.PROGRESS, progressHandler); this.fr.addEventListener(Event.COMPLETE, completeHandler); } private function startUpload(evt:Event):void { fr.browse([new FileFilter("Imagens", "*.jpg;*.gif;*.png")]); } private function selectHandler(evt:Event):void { fr.upload(new URLRequest(this.upUrl)); } private function progressHandler(evt:ProgressEvent):void { trace(Math.round(evt.bytesLoaded / evt.bytesTotal) * 100 + "% Enviado") } private function completeHandler(evt:Event):void { trace("COMPLETE"); } } }
Para usar a classe segue um exemplo:
var up:upLoad = new upLoad({btn: this.btnBuscar, url: "http://localhost/Examples/upload.php"});
E como foi dito, a participação do PHP não tem nada relacionado como o upload, ele apenas move o arquivo da pasta temporária para a pasta onde se encontra o script PHP.
<?php move_uploaded_file($_FILES['Filedata']['tmp_name'], "./".$_FILES['Filedata']['name']); echo "recebido"; ?>



