Como usar PHP para forzar unha descarga de ficheiros

Cando pensades niso, os navegadores web son feitos sorprendentes de programación complexa. Son ferramentas que forman parte da nosa vida cotiá, que se usan para que todo poida comprobar o estado dos amigos e familiares, comunicarse con aquelas persoas, facer compras, asistir a vídeos, coidar a nosa vida financeira e moito máis. Como prevalecen os navegadores nas nosas vidas, a realidade é que a maioría da xente non aprecia a utilidade que realmente son.

Detrás das cámaras

Unha cousa que os navegadores fan no escenario é intentar facer todos os clics que fai unha persoa durante unha sesión de navegación. Isto significa que se poden abrir máis e máis tipos de ficheiros para ver directamente nos navegadores web.

Na maioría das veces, isto é bo, pois pode ser moi frustrante facer clic nunha ligazón a un documento que quere ler e logo ter que esperar a que se descargue e finalmente abra no seu computador. Esa frustración chega ao seguinte nivel cando agardes por esta descarga, só para descubrir que non tes o programa adecuado para abrir o documento. Nestes días, que raramente ocorre porque os navegadores fan, de feito, mostrar o documento directamente en liña. Por exemplo, os ficheiros PDF non se descargan por defecto. En vez diso, móstranse directamente no navegador web como se mostraba unha páxina web.

E se ten un ficheiro que quere que a xente se descargue en lugar de ver directamente no navegador web?

Se é un ficheiro HTML ou un PDF , non pode publicar unha ligazón a ese documento porque (como acabamos de cubrir) un navegador web abre os documentos de xeito automático e os mostra en liña. Para descargar estes ficheiros á computadora dunha persoa, necesitará facer algúns trucos usando PHP.

PHP permítelle cambiar os encabezados HTTP dos ficheiros que está escribindo.

Este proceso fai que poidas forzar un ficheiro para descargar que normalmente o navegador cargaría na mesma xanela. Isto é perfecto para ficheiros como PDF, ficheiros de documentos, imaxes e vídeos que quere que os seus clientes descarguen en lugar de consumir en liña directamente desde o navegador.

Necesitarás PHP no servidor web onde estarán aloxados os teus arquivos, un arquivo a descargar e o tipo MIME do ficheiro en cuestión.

Como facer isto

  1. Cargue o ficheiro que desexe facer dispoñible para descargar ao seu servidor web. Por exemplo, diga que ten un ficheiro PDF que quere que a xente descargue cando faga clic nunha ligazón. Primeiro cargou ese ficheiro no contorno de hospedaxe do seu sitio web.
    enorme_document.pdf
  2. Edite un novo ficheiro PHP no seu editor web - para facilitar a súa utilización, recomendamos nomealo co mesmo nome que o ficheiro descargado, só coa extensión .php. Por exemplo:
    huge_document.php
  3. Abre o bloque PHP do documento:
  4. Na seguinte liña, configure o cabeceiro HTTP:
    cabeceira ("Content-disposition: attachment; filename = huge_document.pdf");
  5. A continuación, configure o tipo MIME do ficheiro:
    cabeceira ("Tipo de contido: aplicación / pdf");
  6. Sinala o ficheiro que queres descargar:
    readfile ("large_document.pdf");
  7. A continuación, peche o bloque PHP e garda o ficheiro:
    ?>
  1. O seu ficheiro PHP debería ser así:
    cabeceira ("Content-disposition: attachment; filename = huge_document.pdf");
    cabeceira ("Tipo de contido: aplicación / pdf");
    readfile ("large_document.pdf");
    ?>
  2. Ligazón ao teu ficheiro PHP como unha ligazón de descarga desde unha páxina web. Por exemplo:
    Descargar o meu gran documento (PDF)

Non debe haber espazos nin retorno de carro en ningún lugar do ficheiro (excepto despois dun punto e coma). As liñas en branco farán que PHP sexa predefinido para o tipo MIME text / html eo seu ficheiro non se descargará.