Olá a todos, hoje venho falar um pouco sobre upload de arquivos no flex. O exemplo trata da primeira parte do trabalho, que e a captura do arquivo na maquina do cliente e o envio do arquivo através de uma requisição GET. No flex e necessário que uma outra página capture este arquivo e trate o mesmo, ela pode ser um pagina, jsp, php, aspx, ou alguma outra tecnologia que trabalhe com gerenciamento de arquivos WEB. Então vamos o código
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
private var arquivo:FileReference = new FileReference();
private function onSelect(evt:Event):void {
txtNomeArquivo.text = arquivo.name;
}
private function onUploadIoError(evt:IOErrorEvent):void {
//Para erros no upload do arquivo tratar aqui.
}
private function onUploadSecurityError(evt:SecurityErrorEvent):void {
//Para erros de segurança tratar aqui.
}
]]>
</mx:Script>
<mx:Label x="337" y="136" text="Arquivo"/>
<mx:TextInput id="txtNomeArquivo" x="391" y="134" width="322"/>
<mx:Button x="391" y="164" label="Browser">
<mx:click>
<![CDATA[
//Abre o browser para seleção do arquivo desejado.
arquivo.addEventListener(Event.SELECT, onSelect);
arquivo.addEventListener(IOErrorEvent.IO_ERROR, onUploadIoError);
arquivo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onUploadSecurityError);
var filtros:FileFilter = new FileFilter("Arquivos de Retorno *.txt; *.doc; *.docx; *.xls; *.xlsx",
"*.txt; *.doc; *.docx; *.xls; *.xlsx");
var array:Array = new Array(filtros);
arquivo.browse(array);
]]>
</mx:click>
</mx:Button>
<mx:Button x="472" y="164" label="Enviar">
<mx:click>
<![CDATA[
//Envia o arquivo para Upload
var sendVars:URLVariables = new URLVariables();
sendVars.action = "upload";
//aqui no sendVars poder ser passado mais de um variavel.
//Ex: sendVars.minhavariavel = "teste";
//objeto usado para setar a pagina que receberá o arquivo
var request:URLRequest = new URLRequest();
request.data = sendVars;
//e necessario uma pagina para receber o arquivo, ex: .php; .jsp; .aspx.
//No caso foi usado um pagina de aspx .net.
//A pagina deve receber o arquivo e tratá-lo.
request.url = "http://meudominio.com.br/PaginaUpload.ashx";
request.method = URLRequestMethod.GET; //requisição do tipo get
//Aqui o objeto FileReference "arquivo" envia o arquivo que foi carregado
//com o nome de "NomeArquivo"
//A pagina que reberá o arquivo deve este mesmo nome para manipula-lo
arquivo.upload(request, "NomeArquivo");
]]>
</mx:click>
</mx:Button>
</mx:Application>
No caso o trabalho de tramento do arquivo pode ser feito em uma tecnlogia de sua escolha, mas isto e tema para um outro post, por enquanto é só.
Ate++. Abraço a todos.
Comentários