Caso MESMO ASSIM você deseje visualizar esta versão, continue por SUA CONTA E RISCO.
Conceito
Muitas vezes, disponibilizamos em nossos sites coisas como imagens, pdfs, arquivos html ou qualquer outro tipo de arquivo que o navegador consiga abrir diretamente. Às vezes não é exatamente isso que queremos. Um PDF que abre no navegador pode tornar-se um grande inconveniente, já que deixa todo o computador lento…
Hoje iremos aprender como forçar um arquivo a ser baixado sem ter que zipa-lo. :P
Mão na massa
A rotina é simples e objetiva. A idéia é indicar para o navegador que o arquivo deve ser baixado e, em seguida, enviar todo o conteúdo para o buffer de saída.
<!--?php<br /--> $arquivo = 'curriculo.pdf';
header ("Content-type: octet/stream");
header ("Content-disposition: attachment; filename=".$arquivo.";");
header("Content-Length: ".filesize($arquivo));
readfile($arquivo);
exit;
?>
Sendo assim, acessando o arquivo com o código acima, será efetuado o download de “curriculo.pdf”.
Outro modo de fazer seria com o nome da arquivo variável, sendo passado por GET:
<!--?php<br /--> $arquivo = $_GET['arquivo'];
if (!file_exists($arquivo))
exit;
header ('Content-type: octet/stream');
header ('Content-disposition: attachment; filename='.$arquivo.';');
header ('Content-Length: '.filesize($arquivo));
readfile($arquivo);
exit;
?>
Digamos que temos que salvar este arquivo como “download.php”, um link para baixa ro arquivo anterior ficaria desta maneira.
<a href="download.php?arquivo=curriculo.pdf">Clique para baixar o curriculo</a>
É bem simples e funcional. Note que você deve ter os arquivos para download no mesmo diretório que o arquivo PHP. Caso estejam em diretórios diferentes, você deve especificar isto no código.
Atenção!
Se você testar este código no Internet Explorer 6 e não aparecer nome do arquivo na hora de baixar, ou seja, aparecer o nome do script (Ex.: download.php), você deve apenas remover a linha que envia o header “Content-type: octet/stream” e tudo deverá estar resolvido!
Conclusão
Nem sempre tudo que parece, é. As vezes um problema qua aparenta ser imenso, pode ser resolvido de uma maneira muito fácil. O ser humano é que tende a complicar o que é simples.
Despeço-me desejando a todos um ótimo ano e aguardando sugestões para mais artigos!
Um grande abraço e fiquem com Deus!
Cara, show de bola esse artigo, essa era uma dúvida que eu tinha, mas por falta de vontade sequer fui atrás, mas agora todos sabemos… graças ao tio rafa =)
parabéns!
abraço
Bah, não sabia que dava pra fazer um troço desses. Legal até :)
Mas eu prefiro zipar :P
Tri massa, abraço!
Opa…
Parabens pelo site.
Certamente vai ajudar muita gente q ta comecando e tb os q nao sao muitos estudiosos (como eu) hehe
abcs,
Diogo Lopes
ahhh… acabei de usar essa megarotina =)
amigo!! mas vc tá chique ein?!
fui procurar isso no google e qual site que apareceu? phpit!
saudações candangas!
Olá…
Conheço seu site atravéz d um camarada meu, o Carlos (souweb.info)…
gostei muito do artigo,
porém gostaria de fazer uma pergunta,,
ñ tenho la muita noção de segurança e tal…
mas supomos que alguém insira o link:
ou então
se esse comando funcionar como "teoricamente" funcionaria, ñ comprometeria a segurança do site?
aguardo resposta!,, um abraço
amigao,
no internet explorer NAO FUNCIONA
coloca isso no seu artigo
Funciona sim…
Mas no IE5 e IE6 ele põe o nome de arquivo errado..
Tenta o novo script! :)
Massa muito massa!!!
Cara, faço as palavras do xorna as minhas! me obriguei a procurar isso agora, eonde achei :b hehehe
vlw
Estava procurando uma coisa assim…
Vou testar aqui…
Daí eu uso quando precisar.
Abç o/
legal, vou testar
Pingback: iT-Full
Fis e deu Certo Legal
Se tiver + Coisas Parecidas me Passem
Opa amigo.. Entao essa é minha maior questão, colocar uma URL do outro Site.
Alguem pode me Ajudar ?
Parabéns,
Muito bem escrtio. Foi copiar, colar e funcionou. Muito obrigado.