Como Forçar downloads de arquivos

Parte de meu tempo, por esses dias, tem sido em tentar colocar um blog de papéis de parede na internet.  Mas havia um problema: Gostaria que, ao clicar no link da imagem, os browsers não abrissem uma nova janela, mas sim, fizesse automaticamente o download da imagem em questão.

Este é um problema comum, sobretudo para imagem, mas que não deixa de ser para arquivos do word ou PDFs também. Assim sendo, passei um bom tempo procurando uma solução para o problema. A primeira delas, plugins para WordPress. Achei três soluções possíveis, nenhuma delas me deixou satisfeito:

  • Um Plugin chamado iMP download, citado no Weblogs Tools Collection – infelizmente, a página oficial está desativada por falta de pagamento!,
  • O Plugin Drain Hole, que não consegui configurar;
  • E o Download Manager, que parece não forçar o download, mas é bem interessante – como todo plugin por LesterChan.

O Plano B era procurar forçar download de arquivo por PHP ou Javascript. Outra vez sem sucesso. Nenhum dos códigos encontrados foi útil.

Enfim, somente encontrei uma solução satisfatória, depois de muito procurar via .htaccess. Na verdade, uma solução satisfatória e muito simples. Com um simples upload do arquivo .htaccess no diretório que contém as imagens (ou os arquivos) resolve o problema. Abaixo, o código:

Forçar download de arquivos – .htaccess

<IfModule mod_headers.c>
<FilesMatch “\.(jpg|jpeg|bmp|png)$”>
ForceType image/jpeg
Header set Content-Disposition attachment
</FilesMatch>
</IfModule>

Note que existe quatro extensões no código: jpg,  jpeg, bmp e png. Estes são os principais tipos de arquivos que trabalharei, mas se você quiser forçar o downlaod de pdf, doc, ppt, pps, por exemplo, basta substituir ou inserir mais estas extensões de arquivos.

7 Comentários em “Como Forçar downloads de arquivos”

  1. Lucas Dantas disse em 20/03/2009 às 07:12:

    Cara, sobre esse htaccess, você usou para download de arquvos jpeg… talvez a pergunta seja estúpida, mas você não corre risco que ele conflite na hora do site puxar jpegs para o seus site? Como por exemplo, planos de fundos ou mesmo fotos?

    Abraço

  2. Lucas Dantas disse em 20/03/2009 às 07:17:

    Aproveitando a boa vontade. Como ficaria esse script para baixar musicas em mp3, para o navegador não abrir um player?

    • EnterNauta disse em 21/03/2009 às 14:31:

      Caro Lucas,

      Não tive problemas em exibir uma imagem que apareça imbuída em uma página. O htaccess apenas obrigará o download se o endereço direto for digitado.

      Para fazer download de mp3, wma, mpeg, por exemplo, basta alterar as extensões dos arquivos neste mesmo padrão. Mas não sei se isso evitaria que o player toque automaticamente o arquivo. Creio que, uma janela de diálogo aparecerá perguntando qual ação o usuário deseja que seja tomada.

      Até…!

  3. Lucas Rodrigues disse em 24/05/2010 às 13:11:

    Cara, no meu caso quero forçar .mp3

    Então ficaria assim:

    <code>

    ForceType audio/mp3

    Header set Content-Disposition attachment

    </code>

    Certo?

    Depois eu salvo este código em bloco de notas na extensão .htaccess e coloquo ele na pasta onde estão os arquivos de audio para download. É isto mesmo?

    Bom, se for isso não deu certo. Será que o joomla esta de alguma forma influênciando este código?

    Espero ancioso por uma resposta. Obrigado.

    Lucas Rodrigues.

    • EnterNauta disse em 25/05/2010 às 09:06:

      Lucas,

      Você tem de alterar as extensões dos arquivos também. Troque por , por exemplo.
      Depois que salvar todo o código em um arquivo txt, altere o nome para .htacces e coloque-o na pasta que deseja forçar o download. Isso se aplica às subpastas.

      Acho que agora deve funcionar. Até onde sei, o Joomla não interfere em .htacces, na verdade, é o .htaccess que pode alterar o Joomla.

  4. George disse em 17/08/2011 às 22:48:

    Sou novo no joomla, queria saber onde posso colocar esse codigo acima?

    Dando copiar e colar no .htaccess principal do site joomla?

    Abraço

    • EnterNauta disse em 28/08/2011 às 12:09:

      George, o arquivo deve ser colocado no diretório em que quer aplicar a restrição independente de estar utilizando o Joomla, WordPress, HTML estático ou outros.

Deixe seu comentário