Cum se utilizează PHP pentru a forța descărcarea unui fișier

Când vă gândiți la asta, browserele web sunt niște fapte uimitoare de programare complexă. Sunt instrumente care fac parte din viața noastră de zi cu zi - folosite pentru totul, de la verificarea statutului de prieteni și de familie, de a comunica cu acești oameni, de a face achiziții, de a viziona videoclipuri, de a avea grijă de viețile noastre financiare și de atâtea Mai Mult. Prevăzute ca browsere în viața noastră, realitatea este că majoritatea oamenilor nu apreciază cât de utile sunt în realitate.

În spatele scenelor

Un lucru pe care browserele fac în spatele scenei este încercarea de a face toate clicurile pe care o face o persoană în timpul unei sesiuni de navigare, de fapt, fac ceva. Aceasta înseamnă că din ce în ce mai multe tipuri de fișiere pot fi deschise pentru a fi vizualizate direct în browserele web.

De cele mai multe ori, este un lucru bun, deoarece poate fi foarte frustrant să faceți clic pe un link către un document pe care doriți să îl citiți și apoi trebuie să îl așteptați să se descarce și, în cele din urmă, să se deschidă pe computerul dvs. Această frustrare atinge nivelul următor când așteptați această descărcare, doar pentru a descoperi că nu aveți programul potrivit pentru a deschide documentul. Aceste zile, acest lucru se întâmplă foarte rar deoarece browserele fac într-adevăr afișarea directă a documentului. De exemplu, fișierele PDF nu se descarcă în mod implicit. În schimb, ele se afișează direct în browserul web similar cu modul în care o pagină web ar fi afișată.

Ce se întâmplă dacă aveți un fișier pe care doriți să îl descărcați în loc să îl vizualizați direct în browserul web?

Dacă este vorba de un fișier HTML sau de un PDF , nu puteți posta doar un link către acel document deoarece (așa cum am acoperit) un browser web deschide automat aceste documente și le afișează în linie. Pentru a descărca aceste fișiere pe computerul unei persoane, trebuie să faceți niște trickery folosind PHP.

PHP vă permite să modificați antetele HTTP ale fișierelor pe care le scrieți.

Acest proces o face astfel încât să puteți forța un fișier de descărcat care în mod normal browserul se va încărca în aceeași fereastră. Acest lucru este perfect pentru fișiere precum fișierele PDF, fișierele de documente, imaginile și videoclipurile pe care doriți să le descarce clienții, în loc să consume online direct din browser.

Veți avea nevoie de PHP pe serverul web unde vor fi găzduite fișierele dvs., un fișier care va fi descărcat și tipul MIME al fișierului în cauză.

Cum să facă acest lucru

  1. Încărcați fișierul pe care doriți să-l puneți la dispoziție pentru descărcare pe serverul dvs. web. De exemplu, spuneți că aveți un fișier PDF pe care doriți să îl descărcați atunci când dau clic pe un link. Mai întâi, veți încărca acel fișier în mediul de găzduire al site-ului dvs. web.
    huge_document.pdf
  2. Editați un nou fișier PHP în editorul dvs. web - pentru ușurință în utilizare, vă recomandăm să-i numiți același nume ca fișierul descărcat, numai cu extensia .php. De exemplu:
    huge_document.php
  3. Deschideți blocul PHP în documentul dvs.:
  4. În linia următoare, setați antetul HTTP:
    header ("Conținut-dispunere: atașament; fișier nume = imens_document.pdf");
  5. Apoi setați tipul MIME al fișierului:
    antet ("Tipul de conținut: aplicație / pdf");
  6. Accesați fișierul pe care doriți să îl descărcați:
    readfile ( "huge_document.pdf");
  7. Apoi închideți blocul PHP și salvați fișierul:
    ?>
  1. Fișierul dvs. PHP ar trebui să arate astfel:
    header ("Conținut-dispunere: atașament; fișier nume = imens_document.pdf");
    antet ("Tipul de conținut: aplicație / pdf");
    readfile ( "huge_document.pdf");
    ?>
  2. Conectați-vă la fișierul dvs. PHP ca pe un link de descărcare de pe o pagină web. De exemplu:
    Descărcați documentul meu imens (PDF)

Nu trebuie să existe spații sau cărucioare care să se întoarcă oriunde în fișier (cu excepția după un semi-colon). Liniile goale vor determina PHP implicit la textul / html de tip MIME, iar fișierul dvs. nu se va descărca.