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:
-
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);
-
}
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:
-
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";
-
}
-
}
No PHP fica somente isso:
-
//Pega o nome da imagem passado pelo Flex.
-
$nomeImg = $_GET[nomeImagem];
-
-
//Diretório aonde será salvo o arquivo.
-
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:
Link do Source
*Flex 3
Obrigado pessoal e Boas festas!
\o/
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
Free no deposit casinos…
Free no deposit casinos…
9 de maio de 2008
Ae, legal esse How To ae, muito simples e explicativo, valeu. =)
23 de outubro de 2008
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?
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;
14 de janeiro de 2009
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
10 de agosto de 2009
Cara, ficou meio que incompleto esse seu tutorial né?
7 de dezembro de 2009
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.
Comments RSS TrackBack Identifier URI
Deixe um comentário








8 Comentários