Kako preuzeti datoteku u PHP -u

How Download File Php

Općenito, za preuzimanje datoteke s nastavcima nije potrebna PHP skripta exe i zatvarač . Ako je mjesto datoteke ove vrste datoteka postavljeno u href atribut elementa sidra, tada se datoteka automatski preuzima kada korisnik klikne vezu za preuzimanje. Neke datoteke, kao npr slika datoteke, PDF datoteke, tekst datoteke, CSV datoteke itd., ne preuzimaju se automatski, već se otvaraju u pregledniku kada korisnik klikne vezu za preuzimanje. Te se datoteke mogu prisilno preuzeti u PHP -u ​​pomoću readfile () funkcija koja se ne preuzima automatski. Ovaj vodič vam pokazuje kako prisilno preuzeti bilo koju datoteku pomoću PHP skripte.

Provjerite veze za preuzimanje

Ranije je spomenuto da zatvarač i exe datoteke se preuzimaju automatski, bez korištenja PHP skripte. Prvo stvorite HTML datoteku sa sljedećim kodom. Ovdje su definirana četiri sidrena elementa za preuzimanje četiri vrste datoteka. Ove vrste datoteka uključuju TEXT, ZIP, PDF i JPG datoteke.



Preuzmi.html



< html >
< glava >
< titula >Preuzmite datoteke</ titula >
</ glava >
< tijelo >
< str >< do href='abc.txt'>Preuzmite TEXT datoteku</ do ></ str >
< str >< do href='horizon.zip'>Preuzmite ZIP datoteku</ do ></ str >
< str >< do href='predavanje.pdf'>Preuzmite PDF datoteku</ do ></ str >
< str >< do href='rose.jpg'>Preuzmite JPG datoteku</ do ></ str >
</ tijelo >
</ html >

Izlaz
Nakon preuzimanja datoteke zip datoteke pojavit će se sljedeći dijaloški okvir za preuzimanje datoteke. Korisnik tada može preuzeti datoteku ili otvoriti datoteku u upravitelju arhive.




Ako kliknete na datoteku slike, slika će se automatski otvoriti u pregledniku, kao što je prikazano u sljedećem izlazu. Morate spremiti datoteku da biste kopirali datoteku slike na lokalni pogon. Na isti način, kada kliknete na vezu PDF i TEXT datoteke, sadržaj datoteke bit će otvoren u pregledniku bez preuzimanja datoteke. Rješenje ovog problema je nasilno preuzimanje datoteke pomoću ugrađenog PHP-a readfile () funkcija.

Preuzmite datoteku pomoću funkcije readfile ()

The readfile () funkcija koristi se u PHP skripti za prisilno preuzimanje bilo koje datoteke s trenutne lokacije ili datoteke s putanjom datoteke. Sintaksa ove funkcije navedena je u nastavku.



Sintaksa
int readfile (niz $ naziv datoteke [, bool $ use_include_path = false [, resurs $ context]])

Ova funkcija može uzeti tri argumenta. Prvi argument je obavezan, a druga dva su izborna. Prvi argument, $ naziv datoteke , sprema naziv datoteke ili naziv datoteke s putem koji će se preuzeti. Zadana vrijednost drugog parametra, $ use_include_path , je false i bit će postavljeno na true ako se naziv datoteke s putanjom koristi u prvom argumentu. Treći argument, $ kontekst , koristi se za označavanje izvora toka konteksta. Ova funkcija vraća broj bajtova pročitanih iz datoteke spomenute u prvom argumentu. Upotreba ove funkcije prikazana je u sljedeća dva primjera.

Primjer 1: Preuzmite datoteku s nazivom datoteke

U ovom primjeru stvorit ćemo HTML datoteku sa sljedećim kodom, gdje će naziv datoteke biti proslijeđen kao parametar URL -a pod nazivom staza , a vrijednost ovog parametra bit će proslijeđena u PHP datoteku s imenom download.php .

download2.html

< html >
< glava >
< titula > Preuzmi datoteke</ titula >
</ glava >
< tijelo >
< str >< do href='download.php? path = abc.txt'> PreuzmiTEKSTdatoteka</ do ></ str >
< str >< do href='download.php? path = horizon.zip'> Preuzmite ZIP datoteku</ do ></ str >
< str >< do href='download.php? path = predavanje.pdf'> Preuzmite PDF datoteku</ do ></ str >
< str >< do href='download.php? path = rose.jpg'> Preuzmite JPG datoteku</ do ></ str >
</ tijelo >
</ html >

Izradit ćemo PHP datoteku sa sljedećim kodom za prisilno preuzimanje datoteke. Evo, otišao) funkcija koristi se za provjeru je li $ _GET ['put'] je definirano. Ako je varijabla definirana, dokument postoji() funkcija se koristi za provjeru postoji li datoteka na poslužitelju. Zatim, Zaglavlje() funkcija koristi se za postavljanje potrebnih podataka zaglavlja prije korištenja readfile () funkcija. The ime baze () funkcija koristi se za dohvaćanje naziva datoteke, a veličina datoteke() funkcija se koristi za čitanje veličine datoteke u bajtima, što će biti prikazano u početnom dijaloškom okviru za preuzimanje datoteke. The flush () funkcija se koristi za brisanje izlaznog međuspremnika. The readfile () Funkcija se ovdje koristi samo s nazivom datoteke.

download.php



ako( otišao ($ _GET['staza']))
{
// Pročitajte naziv datoteke
$ naziv datoteke = $ _GET['staza'];
// Provjerite postoji li datoteka ili ne
ako( dokument postoji ($ naziv datoteke)) {

// Definiranje podataka zaglavlja
Zaglavlje ('Opis sadržaja: prijenos datoteka');
Zaglavlje ('Content-Type: application/octet-stream');
Zaglavlje ('Kontrola predmemorije: nema predmemorije, mora se ponovno provjeriti');
Zaglavlje ('Ističe: 0');
Zaglavlje ('Sadržaj-dispozicija: privitak; naziv datoteke = ''. naziv baze ($ naziv datoteke).'' ');
Zaglavlje ('Duljina sadržaja:' . veličina datoteke ($ naziv datoteke));
Zaglavlje ('Pragma: javna');

// Brisanje izlaznog međuspremnika sustava
ispirati ();

// Pročitajte veličinu datoteke
readfile ($ naziv datoteke);

// Prekinuti iz skripte
the ();
}
drugo{
izbaciti 'Mapa ne postoji.';
}
}
drugo
izbaciti 'Naziv datoteke nije definiran.'
?>

Izlaz
Sljedeći izlaz pojavit će se nakon klika na vezu za preuzimanje slikovne datoteke. Veličina datoteke ruža.jpg slika je 27,2 KB , kao što je prikazano u dijaloškom okviru. Datoteku možete preuzeti odabirom datoteke Spremiti datoteku radio gumb i pritiskom na u redu dugme.

Primjer 2: Preuzmite datoteku s putom datoteke

Ako datoteka postoji na danom mjestu datoteke, put datoteke morat će se navesti u URL -u. U ovom primjeru stvorit ćemo HTML datoteku sa sljedećim kodom, koja će proslijediti naziv datoteke s putanjom datoteke:

download3.html

< html >
< glava >
< titula >Preuzmite datoteke</ titula >
</ glava >
< tijelo >
< str >< do href='download.php? path = preuzimanja/predavanje.pdf'>Preuzmite PDF datoteku</ do ></ str >
< str >< do href='download2.php? path = downloads/rose.jpg'>Preuzmite JPG datoteku</ do ></ str >
</ tijelo >
</ html >

Izradit ćemo PHP datoteku sa sljedećim kodom za preuzimanje datoteke s putanje datoteke. PHP kôd u prethodnom primjeru bit će malo izmijenjen za preuzimanje datoteke s zadane staze. The clearstatecache () funkcija se koristi za brisanje predmemorije koja je prethodno pohranjena. U argumentu se koriste dva argumenta readfile () funkcija.

download2.php


ako( otišao ($ _GET['staza']))
{
// Pročitajte url
$ url = $ _GET['staza'];

// Brisanje predmemorije
clearstatcache ();

// Provjerite postoji li put datoteke ili ne
ako( dokument postoji ($ url)) {

// Definiranje podataka zaglavlja
Zaglavlje ('Opis sadržaja: prijenos datoteka');
Zaglavlje ('Content-Type: application/octet-stream');
Zaglavlje ('Sadržaj-dispozicija: privitak; naziv datoteke = ''. naziv baze ($ url).'' ');
Zaglavlje ('Duljina sadržaja:' . veličina datoteke ($ url));
Zaglavlje ('Pragma: javna');

// Brisanje izlaznog međuspremnika sustava
ispirati ();

// Pročitajte veličinu datoteke
readfile ($ url,pravi);

// Prekinuti iz skripte
the ();
}
drugo{
izbaciti 'Putanja datoteke ne postoji.';
}
}
izbaciti 'Putanja datoteke nije definirana.'

?>

Izlaz
Nakon što kliknete vezu za preuzimanje PDF datoteke, pojavit će se sljedeći izlaz.

Video-vodič

Zaključak

Ovaj je članak pružio jednostavan način za prisilno preuzimanje bilo koje datoteke pomoću PHP skripte, kako bi čitatelji mogli dodati značajku preuzimanja u svoju skriptu.