Upload de arquivos em Flex

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.

Leave a Reply