Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Silas Pousa

Botão de Donwload arquivo pdf em as3

Recommended Posts

Boa Noite Galera.

 

Desculpe-me se esse Tópico já foi feito, procurei muito e não encontrei nada fácil.

Preciso fazer uma function para um botão fazer um download de um arquivo DPF.

Encontrei muitas coisas como colocar o endereço do local do arquivo via "navigateToURL"

só que esse método não faz o download em si, na verdade ele abre o PDF no próprio browser.

Também li só uma classe chamada "FileReference", só com esse método aparece a tela de "salvar como" para você escolher o local e quando você escolhe simplesmente nada acontece.

Alguem pode me ajudar. era para ser uma coisa tão simples e esta me dando uma dor de cabeça

segue o código para analise

 

bt_pdf.addEventListener(MouseEvent.CLICK, download);

 

function download(event:MouseEvent):void

{

var arquivo:URLRequest = new URLRequest("Indoor_Society_Apresentação.pdf");

var fileRef:FileReference = new FileReference();

fileRef.download(arquivo);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que utilizando a classe filereference temos que trabalhar usando http, e nao um pdf que ta na sua maquina.

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Galera,

 

Desta vez eu até consegue fazer do botão funcionar.....

Agora o problema é outro.

Se eu utilizar o navegador Chrome o download funciona belezinha.

Agora quando tento no IE, ele dá erro de IOError.

alguem sabe me ajudar???

 

Segue em anexo o código.

 

 

 

 

import flash.display.Sprite;

import flash.events.*;

import flash.net.FileReference;

import flash.net.URLRequest;

import flash.net.FileFilter;

 

var tempo:Timer = new Timer( 4000, 1 );

tempo.addEventListener( TimerEvent.TIMER, limpa);

 

var downloadURL:URLRequest;

var fileName:String = "Indoor_Society_Apresentação.pdf";

var file:FileReference;

bar.width = 1;

bar.alpha = 0;

 

bt_pdf.addEventListener(MouseEvent.CLICK, FileReference_download);

 

function FileReference_download(Event:MouseEvent):void

{

downloadURL = new URLRequest();

downloadURL.url = "http://www.intramidia.com.br/novo/Indoor_Society_Apresentação.pdf";

file = new FileReference();

configureListeners(file);

file.download(downloadURL, fileName);

}

function configureListeners(dispatcher:IEventDispatcher):void

{

dispatcher.addEventListener(Event.CANCEL, cancelar);

dispatcher.addEventListener(Event.COMPLETE, completo);

dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErro);

dispatcher.addEventListener(ProgressEvent.PROGRESS, In_progress);

dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, segurançaErro);

}

 

function cancelar(event:Event):void

{

texto.text = "Download cancelado pelo usuário";

tempo.start();

}

 

function completo(event:Event):void

{

texto.text = "Download Completo.";

tempo.start();

}

 

function ioErro(event:IOErrorEvent):void

{

texto.text = "Arquivo não encontrado.";

tempo.start();

}

 

function In_progress(event:ProgressEvent):void

{

var p:Number= event.bytesLoaded/event.bytesTotal;

bar.alpha = 1;

texto.text = "Baixando Arquivo."

per.text = Math.floor(p*100)+"%";

bar.width = Math.floor(p*200);

}

function segurançaErro(event:SecurityErrorEvent):void

{

texto.text = "Erro de Segurança.";

tempo.start();

}

function limpa( e:TimerEvent ):void

{

texto.text = "";

per.text = "";

bar.alpha = 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou usando este código (AS 3.0) para o download de um arquivo executável zipado, talvez seja útil para você (está publicado, funciona em qualquer navegador):

Usei neste exemplo a variável "música", pois meu arquivo para download é uma animação em Flash com som.

Você pode escolher tanto para a função quanto para a variável os nomes que preferir.

Se tiver mais de um botão para a mesma finalidade (baixar arquivos), altere o nome de instância do botão e escolha outros nomes, tanto para a função como para a variável.

 

function download(event:MouseEvent):void
{
	
	var musica:URLRequest = new URLRequest("http://www.seudominio.com.br/Arquivo_PDF.rar");
		navigateToURL(musica);
}
bt_download.addEventListener(MouseEvent.CLICK, download);

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala galera

pronto... desta vez consegui.... o problema era os caracteres especiais do arquivo... quando mudei "Apresentação" para "apresentacao" funcionou em qualquer browser.... obrigado pela ajuda galera... vou postar então o código completo para quem precisar..

 

import flash.display.Sprite;

import flash.events.*;

import flash.net.FileReference;

import flash.net.URLRequest;

import flash.net.FileFilter;

 

var downloadURL:URLRequest;

var fileName:String = "Indoor_Society_Apresentacao.pdf";

var file:FileReference;

bar.width = 1;

bar.alpha = 0;

 

bt_pdf.addEventListener(MouseEvent.CLICK, FileReference_download);

 

function FileReference_download(Event:MouseEvent):void

{

downloadURL = new URLRequest();

downloadURL.url = "http://www.intramidia.com.br/Indoor_Society_Apresentacao.pdf";

file = new FileReference();

configureListeners(file);

file.download(downloadURL, fileName);

}

function configureListeners(dispatcher:IEventDispatcher):void

{

dispatcher.addEventListener(Event.CANCEL, cancelar);

dispatcher.addEventListener(Event.COMPLETE, completo);

dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErro);

dispatcher.addEventListener(ProgressEvent.PROGRESS, In_progress);

dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, segurançaErro);

}

 

function cancelar(event:Event):void

{

texto.text = "Download cancelado pelo usuário";

}

 

function completo(event:Event):void

{

texto.text = "Download Completo.";

}

 

function ioErro(event:IOErrorEvent):void

{

texto.text = "Arquivo não encontrado.";

}

 

function In_progress(event:ProgressEvent):void

{

var p:Number= event.bytesLoaded/event.bytesTotal;

bar.alpha = 1;

texto.text = "Baixando Arquivo."

per.text = Math.floor(p*100)+"%";

bar.width = Math.floor(p*100);

}

function segurançaErro(event:SecurityErrorEvent):void

{

texto.text = "Erro de Segurança.";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado aí pelo help!

No entanto meu flash aparentemente não veio com essas bibliotecas necessárias.

 

import flash.display.Sprite;
import flash.events.*;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.FileFilter;
Sabe como posso baixar elas?
Caso fosse possível posso até trocar o flash por um que funcione.
Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

São classes nativas do AS3, se a versão do Flash que está usando não faz o import automático, é só digitar acima do seu código.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.