Um ficheiro que abre no navegador em vez de descarregar: como forçar o download

A resposta curta: o navegador decide sozinho o que fazer com um ficheiro: um PDF ou uma imagem abrem na janela, um ZIP descarrega. Para obrigar o descarregamento há duas formas: o atributo download na ligação (simples, para ficheiros do próprio site) ou um cabeçalho no servidor (mais forte, serve para uma pasta inteira).

O que o site precisa

O quê O que fazer
O atributo «download» Na ligação: <a href="ficheiro.pdf" download>. Funciona para ficheiros do mesmo site; alguns navegadores ignoram-no para ficheiros de outro endereço.
O cabeçalho do servidor Diz ao navegador para tratar o ficheiro como anexo. Faz-se no .htaccess da pasta onde estão os ficheiros.
Quando forçar Para ficheiros que a pessoa quer guardar (modelos, formulários, instaladores). Para um PDF de leitura, deixar abrir é mais simpático.
O que não resolve Se o PDF «abre em branco» ou o descarregamento falha, é outro problema: O PDF da fatura não descarrega.
Cache Depois de mudar a regra, limpe a cache: o navegador pode guardar o comportamento antigo.

Como começar

1 Tente primeiro o atributo: acrescente a palavra «download» à ligação do ficheiro e teste.
2 Se precisa de forçar para uma pasta, faça cópia do .htaccess dessa pasta e acrescente: <FilesMatch "\.(pdf|zip|docx)$">
Header set Content-Disposition attachment
</FilesMatch>
3 Ponha esta regra só na pasta dos ficheiros para descarregar (por exemplo, /transferencias/), não no site todo.
4 Teste a ligação num navegador limpo (janela privada): deve aparecer o descarregamento.
5 Se deu erro 500 depois de gravar, o servidor não aceitou a linha: volte à cópia do .htaccess e abra um pedido: Erro 500.
Esta regra aplica-se a todos os ficheiros desses tipos na pasta e nas subpastas. Se a pôr na pasta principal, os PDFs do site deixam de abrir no navegador. Use uma pasta só para descarregamentos. E ponha na ligação o tipo e o tamanho do ficheiro, para quem descarrega saber o que vem.
Para regras de cache e de cabeçalhos em geral: Cache do navegador com o .htaccess e .htaccess para projetos PHP. Ficheiros públicos que não deviam estar: Ficheiros que nunca devem ficar públicos.

O ficheiro continua a abrir em vez de descarregar? Abra um pedido com o endereço do ficheiro.

Abrir pedido de suporte

VEJA TAMBÉM

O PDF da factura não descarrega, abre em branco ou aparece estranho: o que tentar

Cache do navegador com .htaccess

.htaccess para projectos PHP: URLs amigáveis e redireccionamentos

Ficheiros que nunca devem ficar públicos: pastas .git, .env, cópias e despejos da base de dados

Erro 500 (Internal Server Error): descobrir a causa, passo a passo

Limpar a cache: a do navegador, a do computador, e a do site

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?