Curso AS3

FileReference não executa o download

Podemos forçar o download de arquivos como um txt, jpg, gif, etc, utilizando PHP manipulando o header. No Flash podemos utilizar também a classe FileReference, faz a mesma coisa, e de forma muito simples, portanto se estamos utilizando o Flash é muito mais vantajoso utilizar a classe do próprio actionscript.

Mas este post não tem intenção de abordar a classe FileReference, e sim de um problema pelo qual passei, observe o script abaixo:

function onDownload():void
{
var fl:FileReference = new FileReference();
fl.download(new URLRequest("texto.txt"));
}

Um script simples que parece funcionar, entretanto após clicar em salvar na janela aberta no browser o arquivo nunca será salvo.

O problema ocorre porque ao contrário da classe URLLoader, a classe FileReference não permanece disponível quando o escopo onde está presente é descartado, assim a caixa para salvar é aberta, mas o objeto FileReference já foi eliminado.

A solução é muito simples, basta declarar o objeto FileReference em um escopo que estará disponível enquanto o objeto for necessário, em classes declare como uma propriedade.

O script abaixo funcionará:

var fl:FileReference = new FileReference();
 
function onDownload():void
{
fl.download(new URLRequest("texto.txt"));
}

O problema é documentado pela Adobe em FileReference.download() in SWF file fails.

4 Responses to “FileReference não executa o download”

  1. Kaka Says:

    Boaa Erick! ;D
    Obrigado pela dica!
    Eee, se quiser podia fazer um artigo sobre a classe FileReference, que tal?
    Ficaria feliz.
    HAHA

    Grande Abraço.

  2. Mario Martins Says:

    Obigado. Que grande dica. Por favor continue com as suas orientações.

  3. James Says:

    Hi, I found your blog on this new directory of WordPress Blogs at blackhatbootcamp.com/listofwordpressblogs. I dont know how your blog came up, must have been a typo, i duno. Anyways, I just clicked it and here I am. Your blog looks good. Have a nice day. James.

  4. Junior Says:

    Beleza Erick.
    Estou com um pequeno problema, mas aparentemente parece ser bem maior do que pensava.
    Consigo fazer o upload sem problemas de um arquivo com caracteres especiais ex: logo_calça.jpg, ok.
    Ai existe outro painel que colocamos para efetuar o download dos arquivos postados , porém no Flex não baixa arquivos com caracteres especiais, ou com espaço entre as palavras.
    Enfim poderiam me ajudar.
    Muito obrigado.
    Abraços.

Leave a Reply