Pessoal, bom dia!
Tenho um arquivo cujos bytes são gerados por um RemoteObject.
A parte java e a chegada dos dados do arquivo estão ok mas estou tendo um problema com o FileReference e o evento de result do RemoteObject.
O código AS3 está mais ou menos assim:
//Evento do botão
public function onClickArquivoButton ( event:MouseEvent ):void
{
remoteObject.recuperarArquivo();
}
//Result do RemoteObject
public function recuperarArquivoResult(e:ResultEvent):void
{
var fileReference:FileReference = new FileReference();
fileReference.save(e.result, null);
}
Este código dá o erro que se segue:
Error: Error #2176: Certas ações, como aquelas que exigem uma janela pop-up, só podem ser invocadas com interação do usuário, por exemplo, clicar com o mouse ou pressionar um botão.
at flash.net::FileReference/_save()
at flash.net::FileReference/save()
...
O que acontece é que para utilizar o FileReference é necessário que o método que utiliza-o seja invocado por uma ação do usuário e pelo que eu entendo o Flex não entende o evento de resultado do RemoteObject como sendo uma ação invocada com interação do usuário, mesmo que a chamada do RemoteObject tenha sido originada por uma ação do usuário(no caso o acionamento do botão).
Pesquisando na internet vi que o pessoal tende a carregar os bytes do arquivo assim que listam ou mostram os arquivos mas no meu caso é inviável essa opção pois o usuário deve alterar alguns dados no sistema e depois gerar o arquivo (fiquei também pensando no tráfego desnecessário de dados caso o usuário nunca venha a precisar do arquivo).
Já consegui implementar com duas ações do usuário (algo como “Preparar Arquivo” e “Salvar Arquivo”) mas gostaria de saber se há alguma maneira de fazer com apenas uma ação do usuário sem pré-carregar os dados do arquivo.
Desde já agradeço!
