Ir para conteúdo

POWERED BY:

Arquivado

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

wBB

[Resolvido] Download de arquivo XML

Recommended Posts

Olá pessoal

 

Tenho uma tabela de log de sistema em meu BD Access, chamada LOGSYS.

Criei uma página em que o usuário lê os registros desta tabela. Agora preciso colocar um recurso na página (um botão download, por exemplo) que permita ao usuário fazer o download de um arquivo XML contendo os registros que ele está vendo na página.

Já sei como gerar o arquivo XML, só preciso saber como é que faz para que quando o usuário clicar neste botão "Download" seja exibida uma caixa de diálogo de "Salvar" para que salve em seu próprio disco o arquivo XML que gerei dinamicamente.

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Beraldo.

Para fazer o download de um arquivo é isso mesmo. Só que agora percebi que talvez não seja necessário realmente criar o arquivo, salvar em disco e depois permitir o download. Imaginei se não seria possível fazer tudo dinamicamente. Por exemplo:

// Gerando o arquivo XML de log
$xmlfile  = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"?>\n";
$xmlfile .= "<LOG_SYS>\n";
while(!$sql->EOF) 
{
   $xmlfile .= "   <LOG>\n";
   $xmlfile .= "	  <ID>"		 .$sql->fields["id"]	   ."</ID>\n";
   $xmlfile .= "	  <MSG>"		.$sql->fields["msg"]	  ."</MSG>\n";
   $xmlfile .= "   </LOG>\n";
   
   $sql->MoveNext();
}
$xmlfile .= "</LOG_SYS>\n";
Considerando que o arquivo está pronto e montado dinamicamente na variável $xmlfile, não seria possível apenas "cuspir" o arquivo após ter sido gerado, abrindo aquela caixa de diálogo de "Salvar"? Dessa forma não seria necessário salvar em disco.

 

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema o wbb beraldo, é que ele quer q apareça a janela de download p/ o cliente...

e por default os navegadores sao programados para "exibir" o conteudo do XML...

 

SOLUÇÃO:

coloque, de preferencia, no começo do arquivo PHP q vai gerar o XML, este trecho:

header("Content-disposition: attachment; filename=\"NOME_DO_ARQUIVO_XML.xml\"");

 

isso mostrara ao navegador q o conteudo q virá pela frente é um arquivo "anexado", de nome NOME_DO_ARQUIVO_XML.xml...

esse arquivo não precisa existir, é apenas pra "mascarar"... tipo:

Arquivo q gera o XML: gera-xml.php

Janela "Salvar arquivo" vai pedir para salvar o arquivo NOME_DO_ARQUIVO_XML.xml

 

pra evitar d q o navegador salve o arquivo XML dentro de um arquivo de nome gera-xml.php

entendeu?! o NOME_DO_ARQUIVO_XML.xml é apenas o nome q deve aparecer para o cliente salvar...

 

esse header é pratico, pois, você naum tem que clicar com o botao direito em cima do link e mandar "Salvar destino como..." ;)

espero q tenha ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi o que sugeri, Dórian Conde Langbeck.

É que estava me referindo ao exemplo #1 do Manual:

http://br2.php.net/header

 

Nesse caso, bastaria trocar readfile() por echo. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Por não termos postado o script, acho que ficou um pouco confuso. :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Dórian!

Era exatamente isso que eu precisava. Executando apenas o "echo" no conteúdo do arquivo ele estava sendo exibido na própria janela do browser, o que não era interessante.

 

Obrigado também ao Beraldo.

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.