Kuidas alla laadida faili PHP -s

How Download File Php



Üldjuhul pole laienditega faili allalaadimiseks PHP skripti vaja exe ja tõmblukk . Kui seda tüüpi failide asukoht on määratud kausta href ankruelemendi atribuudi, laadib fail automaatselt alla, kui kasutaja klõpsab allalaadimislingil. Mõned failid, näiteks pilt failid, PDF failid, teksti failid, CSV faile jne, ei laadita automaatselt alla, vaid avatakse brauseris, kui kasutaja klõpsab allalaadimislingil. Neid faile saab sunniviisiliselt alla laadida PHP -s kasutades readfile () funktsioon, mis ei lae automaatselt alla. See õpetus näitab teile, kuidas mis tahes faili sunniviisiliselt alla laadida PHP skripti abil.

Kontrollige allalaadimislinke

Varem mainiti seda tõmblukk ja exe failid laaditakse alla automaatselt, ilma PHP skripti kasutamata. Kõigepealt looge järgmise koodiga HTML -fail. Siin määratletakse neli ankruelementi nelja tüüpi failide allalaadimiseks. Nende failitüüpide hulka kuuluvad TEXT-, ZIP-, PDF- ja JPG -failid.







Lae alla.html



< html >
< pea >
< tiitel >Failide allalaadimine</ tiitel >
</ pea >
< keha >
< lk >< et href='abc.txt'>Laadige alla TEXT -fail</ et ></ lk >
< lk >< et href='horizon.zip'>Laadige alla ZIP -fail</ et ></ lk >
< lk >< et href='loeng.pdf'>Laadige alla PDF -fail</ et ></ lk >
< lk >< et href='rose.jpg'>Laadige alla JPG -fail</ et ></ lk >
</ keha >
</ html >

Väljund
Pärast zip -faili lingil klõpsamist ilmub faili allalaadimiseks järgmine dialoogiboks. Seejärel saab kasutaja faili alla laadida või faili arhiivihalduris avada.




Kui klõpsate pildifailil, avaneb pilt brauseris automaatselt, nagu on näidatud järgmises väljundis. Pildifaili kohalikus draivis koopia tegemiseks peate faili salvestama. Samamoodi, kui klõpsate PDF- ja TEXT -failide linkidel, avatakse faili sisu brauseris ilma faili alla laadimata. Selle probleemi lahendus on faili sunnitud allalaadimine sisseehitatud PHP abil readfile () funktsiooni.





Faili allalaadimine funktsiooni readfile () abil

The readfile () funktsiooni kasutatakse PHP skriptides mis tahes praeguse asukoha faili või failiteega faili sunniviisiliseks allalaadimiseks. Selle funktsiooni süntaks on toodud allpool.



Süntaks
int readfile (string $ failinimi [, bool $ use_include_path = false [, ressurss $ context]])

See funktsioon võib võtta kolm argumenti. Esimene argument on kohustuslik ja ülejäänud kaks argumenti on vabatahtlikud. Esimene argument, $ failinimi , salvestab failinime või failinime koos allalaaditava teega. Teise parameetri vaikeväärtus, $ use_include_path , on vale ja seatakse väärtuseks tõene, kui esimeses argumendis kasutatakse failinime koos teega. Kolmas argument, $ kontekstis , kasutatakse kontekstivoo ressursi tähistamiseks. See funktsioon tagastab esimeses argumendis mainitud failist loetud baitide arvu. Selle funktsiooni kasutamise näited on toodud kahes järgmises näites.

Näide 1: laadige fail alla failinimega

Selles näites loome järgmise koodiga HTML -faili, kus faili nimi edastatakse nimega URL -i parameetrina tee , ja selle parameetri väärtus edastatakse PHP -failile nimega download.php .

download2.html

< html >
< pea >
< tiitel > Failide allalaadimine</ tiitel >
</ pea >
< keha >
< lk >< et href='download.php? path = abc.txt'> Laadi allaTEKSTfaili</ et ></ lk >
< lk >< et href='download.php? path = horizon.zip'> Lae alla ZIP -fail</ et ></ lk >
< lk >< et href='download.php? path = loeng.pdf'> Laadige alla PDF -fail</ et ></ lk >
< lk >< et href='download.php? path = rose.jpg'> Laadige alla JPG -fail</ et ></ lk >
</ keha >
</ html >

Faili sunniviisiliseks allalaadimiseks loome järgmise koodiga PHP -faili. Siin, läinud) funktsiooni kasutatakse selleks, et kontrollida, kas $ _GET [’tee’] on määratletud. Kui muutuja on määratletud, file_exists () funktsiooni abil kontrollitakse, kas fail on serveris olemas. Edasi, päis () funktsiooni kasutatakse vajaliku päisteabe seadistamiseks enne readfile () funktsiooni. The basename () funktsiooni kasutatakse failinime hankimiseks ja failisuurus () funktsiooni kasutatakse faili suuruse lugemiseks baitides, mis kuvatakse faili allalaadimiseks avanevas dialoogiboksis. The loputada () funktsiooni kasutatakse väljundpuhvri kustutamiseks. The readfile () funktsiooni kasutatakse siin ainult failinimega.

download.php



kui( läinud ($ _GET['tee']))
{
// Loe failinime
$ failinimi = $ _GET['tee'];
// Kontrollige, kas fail on olemas või mitte
kui( file_exist ($ failinimi)) {

// Päise teabe määratlemine
päis („Sisu-kirjeldus: failiedastus”);
päis („Sisu tüüp: rakendus/oktett-voog”);
päis ('Vahemälu kontroll: vahemälu pole, tuleb uuesti kinnitada');
päis ('Aegub: 0');
päis ('Sisu-paigutus: manus; failinimi = '. põhinimi ($ failinimi).'' ');
päis ('Sisu pikkus:' . failisuurus ($ failinimi));
päis ('Pragma: avalik');

// Süsteemi väljundpuhvri kustutamine
loputada ();

// Lugege faili suurust
lugemisfail ($ failinimi);

// Lõpeta skripti järgi
the ();
}
muidu{
viskas välja 'Faili ei ole olemas.';
}
}
muidu
viskas välja 'Faili nimi pole määratletud.'
?>

Väljund
Pärast pildifaili allalaadimislingi klõpsamist kuvatakse järgmine väljund. Faili suurus roos.jpg pilt on 27,2 KB , nagu on näidatud dialoogiboksis. Faili saate alla laadida, valides Salvesta fail raadionuppu ja vajutage Okei nuppu.

Näide 2: Laadige fail alla failiteega

Kui fail on antud faili asukohas olemas, tuleb faili tee URL -is mainida. Selles näites loome järgmise koodiga HTML -faili, mis edastab failinime koos failiteega:

download3.html

< html >
< pea >
< tiitel >Failide allalaadimine</ tiitel >
</ pea >
< keha >
< lk >< et href='download.php? path = downloads/loeng.pdf'>Laadige alla PDF -fail</ et ></ lk >
< lk >< et href='download2.php? path = downloads/rose.jpg'>Laadige alla JPG -fail</ et ></ lk >
</ keha >
</ html >

Loome PHP -faili järgmise koodiga, et fail failiteelt alla laadida. Eelmise näite PHP -koodi muudetakse veidi, et fail antud teelt alla laadida. The tühjendage vahemälu () funktsiooni kasutatakse varem salvestatud vahemälu tühjendamiseks. Kaardis kasutatakse kahte argumenti readfile () funktsiooni.

download2.php


kui( läinud ($ _GET['tee']))
{
// Lugege URL -i
$ url = $ _GET['tee'];

// Tühjenda vahemälu
tühjendage valu ();

// Kontrollige, kas failitee on olemas või mitte
kui( file_exist ($ url)) {

// Päise teabe määratlemine
päis („Sisu-kirjeldus: failiedastus”);
päis („Sisu tüüp: rakendus/oktettvoog”);
päis ('Sisu-paigutus: manus; failinimi = '. põhinimi ($ url).'' ');
päis („Sisu pikkus:” . failisuurus ($ url));
päis ('Pragma: avalik');

// Süsteemi väljundpuhvri kustutamine
loputada ();

// Lugege faili suurust
lugemisfail ($ url,tõsi);

// Lõpeta skripti järgi
the ();
}
muidu{
viskas välja 'Faili teed pole olemas.';
}
}
viskas välja 'Faili tee pole määratletud.'

?>

Väljund
Pärast PDF -faili allalaadimislingi klõpsamist kuvatakse järgmine väljund.

Videoõpetus

Järeldus

See artikkel pakkus lihtsat viisi mis tahes faili sunniviisiliseks allalaadimiseks PHP skripti abil, et aidata lugejatel lisada skripti allalaadimisfunktsioon.