Curso AS3

Upload usando apenas FileReference

January 23rd, 2009

O 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";
 
?>

Flash CS4, Salvando dados apenas com Actionscript

December 19th, 2008

AS3 e as propriedades _root, _parent, _level, this, _global

December 18th, 2008

Desafio : 25 Linhas de Actionscript

November 17th, 2008

Flash CS4 Trial Disponível para Download

November 11th, 2008

Detecção da direção de movimento

November 10th, 2008

Curso de AS3, valor

November 5th, 2008

Flash3D update Sphere e Cube

October 23rd, 2008

Flash CS4, Classe drawTriangles

October 21st, 2008

Adobe Flash Player 10 Final

October 18th, 2008