Salvando imagens da sua aplicação Flex no computador do Usuário
TargetSnapshot é mais um componente desenvolvido pela DClick. Ele permite salvar uma imagem de qualquer componente da aplicação na máquina do usuário. Veja o exemplo:
Para ter acesso ao código fonte: Botão Direito -> View Source.
Do lado da interface de usuário componente adiciona um comportamento interessante para destacar o componente cuja imagem será salva: os componentes que não forem o “alvo” ficam em tons cinza enquanto apenas o componente “alvo” apresenta as cores reais. Este comportamento é adicionado à aplicação simplesmente informando:
-
<controls:TargetSnapshot
-
label="Capturar Imagem"
-
actionDescription="Salvar Imagem"
-
targets="{[myColulmnChartPanel, myPiePanel, myLabel, myDateChooser]}"
-
actionClick="actionClickHandler(event)"/>
Na propriedade “targets” você informa os “candidatos” a terem sua imagem salva no computador do usuário. Esta facilidade é a principal vantagem deste componente do lado do Flex. Porém, falta ainda a parte do o Back-End que será responsável por enviar a imagem para a máquina do usuário.
O handler “actionClickHandler” é o responsável por enviar “os dados da imagem” para o Back-End criar a imagem e retorná-la para o computador do usuário.
No nosso exemplo, que não usa DataService, isto é feito através de um post simples graças a classe auxiliar "UploadPostHelper" desenvolvida por Jonathan Marston que é responsável por pegar um ByteArray e gerar o PostData como pode ser visto na linha 06 do trecho abaixo.
-
01. private function createURLRequest(snapshotByteArray:ByteArray, imageName:String):URLRequest
-
02.{
-
03. var urlRequest:URLRequest = new URLRequest("http://localhost:7001/upload/ProcessFileUpload.jsp");
-
04. urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
-
05. urlRequest.method = URLRequestMethod.POST;
-
06. urlRequest.data = UploadPostHelper.getPostData(imageName, snapshotByteArray, {});
-
07. urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
-
08.
-
09. return urlRequest;
-
10.}
Feito isso a parte Java fica fácil. No blog do Jonathan Marston você encontra um exemplo de como fazer a mesma coisa com PHP.
Para este post eu contei com meu amigo Henrique Marino que foi quem propôs e implementou a parte do Back-end e a integração com Flex deste exemplo.
7 comentários para “Salvando imagens da sua aplicação Flex no computador do Usuário”
Não esta aparecendo o swf, acho q deve ter dado erro no upload
É verdade, não está carregando o .swf…..
=)
Obrigado por nos avisar. Resolveremos o problema assim que possível.
[...] pessoas reclamaram que este post não exibia o SWF. Fiz alguns testes depois de contar com a ajuda do Henrique e parece que o [...]
[...] forma que a classe “UploadPostHelper”, desenvolvida por Jonathan Marston, que o Beck postou no “Salvando imagens da sua aplicação Flex no computador do Usuário”. Precisávamos mais que isso. Sabíamos que era possível, pois em um formulário HTML comum todos os [...]
Não consigo ver o SWF.
Você poderia fornecer o código Java também?
Adicionar comentário
Não esta aparecendo o swf, acho q deve ter dado erro no upload
É verdade, não está carregando o .swf…..
=)
Obrigado por nos avisar. Resolveremos o problema assim que possível.
[...] pessoas reclamaram que este post não exibia o SWF. Fiz alguns testes depois de contar com a ajuda do Henrique e parece que o [...]
[...] forma que a classe “UploadPostHelper”, desenvolvida por Jonathan Marston, que o Beck postou no “Salvando imagens da sua aplicação Flex no computador do Usuário”. Precisávamos mais que isso. Sabíamos que era possível, pois em um formulário HTML comum todos os [...]
Não consigo ver o SWF.
Você poderia fornecer o código Java também?

