DClick

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:

XML:
  1. <controls:TargetSnapshot
  2.         label="Capturar Imagem"
  3.         actionDescription="Salvar Imagem"
  4.         targets="{[myColulmnChartPanel, myPiePanel, myLabel, myDateChooser]}"
  5.         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.

Actionscript:
  1. 01. private function createURLRequest(snapshotByteArray:ByteArray, imageName:String):URLRequest
  2. 02.{
  3. 03.     var urlRequest:URLRequest = new URLRequest("http://localhost:7001/upload/ProcessFileUpload.jsp");
  4. 04.     urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
  5. 05.     urlRequest.method = URLRequestMethod.POST;
  6. 06.     urlRequest.data = UploadPostHelper.getPostData(imageName, snapshotByteArray, {});
  7. 07.     urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache'));
  8. 08.               
  9. 09.     return urlRequest;
  10. 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.

Por Beck Novaes em 6/November/2007 | Comentar | Trackback


No Translations

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

(requerido)
(requerido, não será publicado)