Forçar Download de Arquivos com PHP
As vezes queremos que apareça a janela de download em certos links de nossas páginas. Mais isso as vezes não ocorre, pois alguns formatos de arquivos abrem diretamente em outros programas ou até mesmo no navegador (isso depende da versão do nave
Olá Pessoal.
Como primeiro artigo aqui na Dev Media, vou mostrar como fazer um script em PHP para forçar o download de arquivos.
As vezes queremos que apareça a janela de download em certos links de nossas páginas. Mais isso as vezes não ocorre, pois alguns formatos de arquivos abrem diretamente em outros programas ou até mesmo no navegador (isso depende da versão do navegador). Um exemplo disso são os arquvos PDF, JPG, MP3 entre outros.
Como esse script podemos forçar o download desses arquivos sem ter o problema mensionado acima.
Crie um arquivo PHP chamado "baixar.php" e coloque o seguinte código:
<?php
$arquivo = $_GET["arquivo"];
if(isset($arquivo) && file_exists($arquivo)){ // faz o teste se a variavel não esta vazia e se o arquivo realmente existe
switch(strtolower(substr(strrchr(basename($arquivo),"."),1))){ // verifica a extensão do arquivo para pegar o tipo
case "pdf": $tipo="application/pdf"; break;
case "exe": $tipo="application/octet-stream"; break;
case "zip": $tipo="application/zip"; break;
case "doc": $tipo="application/msword"; break;
case "xls": $tipo="application/vnd.ms-excel"; break;
case "ppt": $tipo="application/vnd.ms-powerpoint"; break;
case "gif": $tipo="image/gif"; break;
case "png": $tipo="image/png"; break;
case "jpg": $tipo="image/jpg"; break;
case "mp3": $tipo="audio/mpeg"; break;
case "php": // deixar vazio por seurança
case "htm": // deixar vazio por seurança
case "html": // deixar vazio por seurança
}
header("Content-Type: ".$tipo); // informa o tipo do arquivo ao navegador
header("Content-Length: ".filesize($arquivo)); // informa o tamanho do arquivo ao navegador
header("Content-Disposition: attachment; filename=".basename($arquivo)); // informa ao navegador que é tipo anexo e faz abrir a janela de download, tambem informa o nome do arquivo
readfile($arquivo); // lê o arquivo
exit; // aborta pós-ações
}
?>
Agora crie um arquivo html "index.html" e coloque o seguinte código:
<!--
Este será o link que apontará para o nosso script PHP.
Use no href "baixar.php?arquivo=" + caminho de seu arquivo;
No Exemplo abaixo utilizei uma imagem com o nome "imagem.jpg" que esta dentro da pasta "arquivos".
-->
<a href="baixar.php?arquivo=arquivos/imagem.jpg">Baixar Arquivo</a>
Agora execute o "index.html" e clique no link "Baixar Arquivo". Irá aparecer a janela de download.
Para dúvidas, reclamações ou sugestões entre em contato atravez do email dalvan.dalvan@gmail.com.
Como primeiro artigo aqui na Dev Media, vou mostrar como fazer um script em PHP para forçar o download de arquivos.
As vezes queremos que apareça a janela de download em certos links de nossas páginas. Mais isso as vezes não ocorre, pois alguns formatos de arquivos abrem diretamente em outros programas ou até mesmo no navegador (isso depende da versão do navegador). Um exemplo disso são os arquvos PDF, JPG, MP3 entre outros.
Como esse script podemos forçar o download desses arquivos sem ter o problema mensionado acima.
Crie um arquivo PHP chamado "baixar.php" e coloque o seguinte código:
<?php
$arquivo = $_GET["arquivo"];
if(isset($arquivo) && file_exists($arquivo)){ // faz o teste se a variavel não esta vazia e se o arquivo realmente existe
switch(strtolower(substr(strrchr(basename($arquivo),"."),1))){ // verifica a extensão do arquivo para pegar o tipo
case "pdf": $tipo="application/pdf"; break;
case "exe": $tipo="application/octet-stream"; break;
case "zip": $tipo="application/zip"; break;
case "doc": $tipo="application/msword"; break;
case "xls": $tipo="application/vnd.ms-excel"; break;
case "ppt": $tipo="application/vnd.ms-powerpoint"; break;
case "gif": $tipo="image/gif"; break;
case "png": $tipo="image/png"; break;
case "jpg": $tipo="image/jpg"; break;
case "mp3": $tipo="audio/mpeg"; break;
case "php": // deixar vazio por seurança
case "htm": // deixar vazio por seurança
case "html": // deixar vazio por seurança
}
header("Content-Type: ".$tipo); // informa o tipo do arquivo ao navegador
header("Content-Length: ".filesize($arquivo)); // informa o tamanho do arquivo ao navegador
header("Content-Disposition: attachment; filename=".basename($arquivo)); // informa ao navegador que é tipo anexo e faz abrir a janela de download, tambem informa o nome do arquivo
readfile($arquivo); // lê o arquivo
exit; // aborta pós-ações
}
?>
Agora crie um arquivo html "index.html" e coloque o seguinte código:
<!--
Este será o link que apontará para o nosso script PHP.
Use no href "baixar.php?arquivo=" + caminho de seu arquivo;
No Exemplo abaixo utilizei uma imagem com o nome "imagem.jpg" que esta dentro da pasta "arquivos".
-->
<a href="baixar.php?arquivo=arquivos/imagem.jpg">Baixar Arquivo</a>
Agora execute o "index.html" e clique no link "Baixar Arquivo". Irá aparecer a janela de download.
Para dúvidas, reclamações ou sugestões entre em contato atravez do email dalvan.dalvan@gmail.com.


Rafael Rodrigues Da Silva
em 7/2/2011 11:44 - Responder
Finalmente um script Correto, que faz o download sem corromper o arquivo pdf
muitisssssssssssssimo obrigado
muitisssssssssssssimo obrigado
em 7/2/2011 11:44 - Responder


Eduardo Cesar Borsato De Oliveira
em 14/7/2011 08:00 - Responder
Olá jovem muito Bom Dia, tenho a seguinte duvida, preciso desenvolver o mesmo tipo de script que o seu, pra forçar o download, só que como faço pra indicar o local do arquivo a ser aberto??
em 14/7/2011 08:00 - Responder

Univel - União Educacional De Cascavel
Olá,
'Baixar Arquivo'
aparentemente ele faz um link que aponta para o script 'baixar.php' e o caminho para o arquivo a ser baixado ele passa como parametro na url '?arquivo=arquivos/imagem.jpg'.
espero ter ajudado.
'Baixar Arquivo'
aparentemente ele faz um link que aponta para o script 'baixar.php' e o caminho para o arquivo a ser baixado ele passa como parametro na url '?arquivo=arquivos/imagem.jpg'.
espero ter ajudado.
em 30/11/2011 08:46 - Responder
[Este post ainda não foi associado a uma sequência]
Você está em:
canal PHP

download
Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

2
0
Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!