Upload de Arquivos com Flex , PHP e Java

Olá Pessoal!

Uma coisa que o pessoal sempre pede na lista, é como fazer o upload de arquivos com Flex,

Um modo é você tratar o Flex como se fosse um form HTML, outro modo é através de ByteArray como este Link.

Hoje mostrarei o modo mais simples, usando a API FileReference.

*Nota: Por questões de segurança do browser, a VM ActionScript não tem acesso direto a arquivos no disco, logo a API apenas da a possibilidade de trabalhar com:
Tamanho, Nome do Arquivo, Data de Criação, Data de modificação e Tipo (extenção).

Neste exemplo mostrarei como fazer o upload com php e java.

No flex é muito simples,
Aqui mostrarei como funciona o “Listeners” que a API oferece:

[as]
public function procuraImg():void
{
    fileImagem = new FileReference();
    //Ao Selecionar….
    fileImagem.addEventListener(Event.SELECT,
        function(event:Event):void
        {
            txtImagem.text = fileImagem.name;
        }
    );
    //Enquanto estiver fazendo o Upload..
    fileImagem.addEventListener(ProgressEvent.PROGRESS,
        function(event:ProgressEvent):void
        {
            var numPerc:Number = Math.round((Number(event.bytesLoaded) / Number(event.bytesTotal)) * 100);
            titleWindow.status = “Carregando Imagem…”+numPerc+”%”;
        }
    );
    //Ao ocorrer um erro…..
    fileImagem.addEventListener(IOErrorEvent.IO_ERROR,
        function(event:IOErrorEvent):void
        {
            Alert.show(“Ocurreu um erro ao Realizar o Upload nDetalhes: “+event.text);
        }
    );
    //Ao Terminar o Upload…..
    fileImagem.addEventListener(Event.COMPLETE,
        function(event:Event):void
        {
            fileImagem = null;
            titleWindow.status = “Upload efetuado com sucesso!”
        }
    );
    //utilizando filtro para upload somente de imagem
    var tipos:FileFilter = new FileFilter(“Arquivos de Imagem *.jpg; *.jpeg; *.gif; *.png”
                                         ,”*.jpg; *.jpeg; *.gif; *.png”);
    var tiposArray:Array = new Array(tipos);
    fileImagem.browse(tiposArray);
}

[/as]

Como podemos ver, é possivel tratar vários eventos,

o mais interessante é o ProgressEvent que como foi apresentado, é possivel fazer um

calculo para gerar a porcentagem de envio.

Com os listeners adicionados, vamos ver como fica quando aciona o upload:

[as]

public function fazerUpload():void
{
    if (txtImagem.text != “” || fileImagem != null)
    {
        //aproximadamente 1MB.
        if (fileImagem.size <= 1048576)
        {
            //Endereco onde esta o aquivo php, ou java.
            var request:URLRequest = new URLRequest(“FileUpload.php”);
            var vars:URLVariables  = new URLVariables();
            vars.nomeImagem = txtNomeImagem.text+fileImagem.type;
            request.data = vars;
            request.method = URLRequestMethod.GET;
            fileImagem.upload(request);   
        }
        else
        {
            titleWindow.status = “Selecione uma Imagem com no maximo 1Mb”;
        }
    }
    else
    {
        titleWindow.status = “Selecione uma Imagem”;    
    }
}

[/as]

No PHP fica somente isso:

[php]

//Pega o nome da imagem passado pelo Flex.
$nomeImg = $_GET[nomeImagem];

//Diretório aonde será salvo o arquivo.
$dirImg = dirname(__FILE__).”/img/”;

move_uploaded_file($_FILES[‘Filedata’][‘tmp_name’],$dirImg.$nomeImg);

[/php]

O exemplo acima mostrei fazendo upload usando PHP no beck-end, mas no source,
existe uma servlet java que faz o mesmo papel que o php apresentado.

Aplicação Rodando:

http://23.20.48.222/downloads/postagens/flexupload/index.html

 

 

Link do Source
*Flex 3

Obrigado pessoal e Boas festas!

o/

9 thoughts on “Upload de Arquivos com Flex , PHP e Java

  1. download free ringtone

    Hi
    Free Ringtones Cool – more than 15.000 free polyphonic ringtones, composer ringtones, effect ringtones, real sound ringtones as well as wallpapers and …
    [url=http://3ringtone.info/id1.html]download free ringtone[/url]

    G’night

    Like

    Reply
  2. Pingback: Free no deposit casinos

  3. Tiago

    muito legal o tutorial, estou com um erro e não sei o pq dele, poderia me ajudar?
    Error #2038.
    estou usando a sua classe java como back-end, como que eu faço para o flex se comunicar com essa classe?

    Like

    Reply
  4. vavamaster

    Olá, ficou muito bom mesmo, meus parabéns, só estou com um problema, eu mudei o objeto para um aimagem, quando ele clica na imagem padrão ele atualiza para a que eu selecionei, mas eu estou com um problema para capturar o diretório dinamicamente. como faço.

    this.selecionaArquivo.source = “C:/Documents and Settings/All Users/Documentos/Minhas imagens/Amostras de imagens/”+arquivo.name;

    Like

    Reply
  5. Fabricio Rieg Viana

    Bom Tarde

    Gostei muito do seu post alias me ajudou muito em varias ocasiões:D

    Só que agora preciso fazer um opload de imagem via formulário… é possível?
    e como eu faria? pois estou muito perdido. 😦

    Desde já Agradeço

    Like

    Reply
  6. Airon

    Cara…. Muito bom o teu post…

    Mas, coloque em letras gigantescas e com “muito brilho” que no source tem a parte java, pois andei revirando a net sobre como fazer upload e não achei tão certinho como aqui.

    Só que passei umas 3 ou 4 vezes por aqui mas nunca quiz ler até o final..

    😀

    Eu só ia em busca direto da parte java.

    Um Abraço.

    Obrigado.

    Like

    Reply
  7. Pingback: upload de arquivos » Bruno bg + ADOBE FLEX

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s