Cum se descarcă un fișier în PHP

How Download File Php



În general, nu este necesar niciun script PHP pentru a descărca un fișier cu extensiile exe și fermoar . Dacă locația fișierului pentru acest tip de fișier este setată în href atributul elementului ancoră, apoi fișierul se descarcă automat atunci când utilizatorul dă clic pe linkul de descărcare. Unele fișiere, cum ar fi imagine fișiere, PDF fișiere, text fișiere, CSV fișierele etc. nu se descarcă automat și, în schimb, se deschid în browser atunci când utilizatorul dă clic pe linkul de descărcare. Aceste fișiere pot fi descărcate forțat în PHP folosind readfile () funcție care nu se descarcă automat. Acest tutorial vă arată cum să descărcați cu forța orice fișier folosind script PHP.

Verificați linkurile de descărcare

S-a menționat anterior că fermoar și exe fișierele se descarcă automat, fără a utiliza script PHP. Mai întâi, creați un fișier HTML cu următorul cod. Aici, cele patru elemente de ancorare sunt definite pentru a descărca cele patru tipuri de fișiere. Aceste tipuri de fișiere includ fișiere TEXT, ZIP, PDF și JPG.







Descărcați.html



< html >
< cap >
< titlu >Descărcați fișiere</ titlu >
</ cap >
< corp >
< p >< la href=„abc.txt”>Descărcați fișierul TEXT</ la ></ p >
< p >< la href=„horizon.zip”>Descărcați fișierul ZIP</ la ></ p >
< p >< la href=„lecture.pdf”>Descărcați fișierul PDF</ la ></ p >
< p >< la href=„rose.jpg”>Descărcați fișierul JPG</ la ></ p >
</ corp >
</ html >

Ieșire
Următoarea casetă de dialog va apărea pentru a descărca fișierul după ce faceți clic pe linkul fișierului zip. Utilizatorul poate descărca fișierul sau îl poate deschide în managerul de arhive.




Dacă faceți clic pe fișierul imagine, imaginea va fi deschisă automat în browser, așa cum se arată în următoarea ieșire. Trebuie să salvați fișierul pentru a face o copie a fișierului imagine în unitatea locală. În același mod, când faceți clic pe linkurile de fișiere PDF și TEXT, conținutul fișierului va fi deschis în browser fără a descărca fișierul. Soluția la această problemă este descărcarea forțată a fișierului folosind PHP-ul încorporat readfile () funcţie.





Descărcați fișierul folosind funcția readfile ()

The readfile () funcția este utilizată în scriptul PHP pentru a descărca forțat orice fișier al locației curente sau fișierul cu calea fișierului. Sintaxa acestei funcții este dată mai jos.



Sintaxă
int readfile (șir $ nume fișier [, bool $ use_include_path = false [, resursă $ context]])

Această funcție poate lua trei argumente. Primul argument este obligatoriu, iar celelalte două argumente sunt opționale. Primul argument, $ nume de fișier , stochează numele fișierului sau numele fișierului cu calea care va fi descărcată. Valoarea implicită a celui de-al doilea parametru, $ use_include_path , este fals și va fi setat la adevărat dacă numele fișierului cu calea este utilizat în primul argument. Al treilea argument, $ context , este folosit pentru a indica resursa fluxului contextual. Această funcție returnează numărul de octeți citiți din fișierul menționat în primul argument. Utilizările acestei funcții sunt prezentate în următoarele două exemple.

Exemplul 1: Descărcați fișierul cu numele fișierului

În acest exemplu, vom crea un fișier HTML cu următorul cod, unde numele fișierului va fi transmis ca parametru al adresei URL numite cale , iar valoarea acestui parametru va fi transmisă fișierului PHP denumit download.php .

download2.html

< html >
< cap >
< titlu > Descărcați fișiere</ titlu >
</ cap >
< corp >
< p >< la href=„download.php? path = abc.txt”> DescărcațiTEXTfişier</ la ></ p >
< p >< la href=„download.php? path = horizon.zip”> Descărcați fișierul ZIP</ la ></ p >
< p >< la href='download.php? path = lecture.pdf'> Descărcați fișierul PDF</ la ></ p >
< p >< la href='download.php? path = rose.jpg'> Descărcați fișierul JPG</ la ></ p >
</ corp >
</ html >

Vom crea fișierul PHP cu următorul cod pentru a descărca fișierul forțat. Aici plecat) funcția este utilizată pentru a verifica dacă $ _GET [„cale”] este definit. Dacă variabila este definită, fisierul exista() funcția este utilizată pentru a verifica dacă fișierul există pe server. Apoi, antet() funcția este utilizată pentru a seta informațiile antet necesare înainte de a utiliza readfile () funcţie. The nume de bază () funcția este utilizată pentru a prelua numele fișierului și fișierul mărime fișier() funcția este utilizată pentru a citi dimensiunea fișierului în octeți, care va fi afișat în caseta de dialog de deschidere pentru a descărca fișierul. The culoare() funcția este utilizată pentru a șterge bufferul de ieșire. The readfile () funcția este utilizată doar cu numele fișierului, aici.

download.php



dacă( plecat ($ _GET['cale']))
{
// Citiți numele fișierului
$ nume de fișier = $ _GET['cale'];
// Verificați dacă fișierul există sau nu
dacă( fisierul exista ($ nume de fișier)) {

// Definiți informații despre antet
antet („Descrierea conținutului: transfer de fișiere”);
antet („Content-Type: application / octet-stream”);
antet („Cache-Control: fără cache, trebuie revalidat”);
antet („Expiră: 0”);
antet („Dispunere de conținut: atașament; filename = '. nume de bază ($ nume de fișier).'' ');
antet („Lungime conținut:” . mărime fișier ($ nume de fișier));
antet („Pragma: public”);

// Ștergeți bufferul de ieșire al sistemului
culoare ();

// Citiți dimensiunea fișierului
readfile ($ nume de fișier);

// Terminați din script
the ();
}
altceva{
aruncat 'Fisierul nu exista.';
}
}
altceva
aruncat „Numele fișierului nu este definit.”
?>

Ieșire
Următoarea ieșire va apărea după ce faceți clic pe linkul de descărcare al fișierului imagine. Dimensiunea fișierului fișierului trandafir.jpg imaginea este 27,2 KB , așa cum se arată în caseta de dialog. Puteți descărca fișierul selectând fișierul Salvează fișierul butonul radio și apăsând butonul Bine buton.

Exemplul 2: Descărcați fișierul cu calea fișierului

Dacă fișierul există la locația respectivă a fișierului, calea fișierului va trebui menționată în adresa URL. În acest exemplu, vom crea un fișier HTML cu următorul cod, care va trece numele fișierului cu calea fișierului:

download3.html

< html >
< cap >
< titlu >Descărcați fișiere</ titlu >
</ cap >
< corp >
< p >< la href='download.php? path = downloads / lecture.pdf'>Descărcați fișierul PDF</ la ></ p >
< p >< la href='download2.php? path = downloads / rose.jpg'>Descărcați fișierul JPG</ la ></ p >
</ corp >
</ html >

Vom crea un fișier PHP cu următorul cod pentru a descărca un fișier din calea fișierului. Codul PHP din exemplul anterior va fi ușor modificat pentru a descărca fișierul din calea dată. The clearstatecache () funcția este utilizată pentru a șterge memoria cache care a fost stocată anterior. Două argumente sunt utilizate în readfile () funcţie.

download2.php


dacă( plecat ($ _GET['cale']))
{
// Citiți adresa URL
$ url = $ _GET['cale'];

// Ștergeți memoria cache
clearstatcache ();

// Verificați dacă calea fișierului există sau nu
dacă( fisierul exista ($ url)) {

// Definiți informații despre antet
antet („Descrierea conținutului: transfer de fișiere”);
antet („Content-Type: application / octet-stream”);
antet („Dispunere de conținut: atașament; filename = '. nume de bază ($ url).'' ');
antet („Lungime conținut:” . mărime fișier ($ url));
antet („Pragma: public”);

// Ștergeți bufferul de ieșire al sistemului
culoare ();

// Citiți dimensiunea fișierului
readfile ($ url,Adevărat);

// Terminați din script
the ();
}
altceva{
aruncat „Calea fișierului nu există.”;
}
}
aruncat „Calea fișierului nu este definită.”

?>

Ieșire
După ce se face clic pe linkul de descărcare al fișierului PDF, va apărea următoarea ieșire.

Tutorial video

Concluzie

Acest articol a furnizat o modalitate simplă de a descărca forțat orice fișier folosind scriptul PHP, pentru a ajuta cititorii să adauge caracteristica de descărcare în scriptul lor.