Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

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.




    3 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Rafael Rodrigues Da Silva
Finalmente um script Correto, que faz o download sem corromper o arquivo pdf

muitisssssssssssssimo obrigado


em 7/2/2011 11:44 - Responder

 

Eduardo Cesar Borsato De Oliveira
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.


em 30/11/2011 08:46 - Responder
 



[Este post ainda não foi associado a uma sequência]
Estatísticas #
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


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

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03