wBB 0 Denunciar post Postado Janeiro 11, 2008 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
Beraldo 864 Denunciar post Postado Janeiro 11, 2008 Use a função header(). Na documentação dessa função há um exemplo com PDF. É só mudar o nome do arquivo e o mime-type (XML -> application/xml). Compartilhar este post Link para o post Compartilhar em outros sites
wBB 0 Denunciar post Postado Janeiro 12, 2008 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
Beraldo 864 Denunciar post Postado Janeiro 12, 2008 se não quiser gravar o arquivo, troque a linha readfile() por echo, exibindo o conteúdo XML. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Dórian Conde Langbeck 0 Denunciar post Postado Janeiro 13, 2008 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
Beraldo 864 Denunciar post Postado Janeiro 13, 2008 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
wBB 0 Denunciar post Postado Janeiro 13, 2008 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