Kaip atsisiųsti failą į PHP

How Download File Php



Paprastai norint atsisiųsti failą su plėtiniais nereikia jokio PHP scenarijaus exe ir užtrauktukas . Jei šio tipo failo vieta yra nustatyta href inkaro elemento atributą, tada failas automatiškai atsisiunčiamas, kai vartotojas spustelėja atsisiuntimo nuorodą. Kai kurie failai, pvz įvaizdį failai, PDF failai, tekstas failai, CSV failai ir pan., neatsisiunčiami automatiškai, o atidaromi naršyklėje, kai vartotojas spustelėja atsisiuntimo nuorodą. Šiuos failus galima prievarta atsisiųsti iš PHP naudojant skaitymo failas () funkcija, kuri neatsisiunčiama automatiškai. Ši pamoka parodo, kaip priverstinai atsisiųsti bet kurį failą naudojant PHP scenarijų.

Patikrinkite atsisiuntimo nuorodas

Anksčiau buvo minėta, kad užtrauktukas ir exe failai atsisiunčiami automatiškai, nenaudojant PHP scenarijaus. Pirmiausia sukurkite HTML failą su šiuo kodu. Čia yra apibrėžti keturi inkaro elementai, skirti atsisiųsti keturių tipų failus. Šie failų tipai apima TEXT, ZIP, PDF ir JPG failus.







Parsisiųsti.html



< html >
< galva >
< titulas >Parsisiųsti failus</ titulas >
</ galva >
< kūnas >
< p >< į href=„abc.txt“>Atsisiųskite TEXT failą</ į ></ p >
< p >< į href='horizon.zip'>Parsisiųsti ZIP failą</ į ></ p >
< p >< į href='paskaita.pdf'>Parsisiųsti PDF failą</ į ></ p >
< p >< į href='rose.jpg'>Atsisiųskite JPG failą</ į ></ p >
</ kūnas >
</ html >

Išvestis
Spustelėjus ZIP failo nuorodą, pasirodys šis dialogo langas, skirtas atsisiųsti failą. Tada vartotojas gali atsisiųsti failą arba atidaryti failą archyvo tvarkyklėje.




Jei spustelėsite vaizdo failą, vaizdas bus automatiškai atidarytas naršyklėje, kaip parodyta toliau pateiktoje išvestyje. Norėdami kopijuoti vaizdo failą vietiniame diske, turite išsaugoti failą. Lygiai taip pat, kai spustelėsite PDF ir TEXT failų nuorodas, failo turinys bus atidarytas naršyklėje neatsisiuntus failo. Šios problemos sprendimas yra priverstinai atsisiųsti failą naudojant integruotą PHP readfile () funkcija.





Atsisiųskite failą naudodami funkciją readfile ()

The readfile () funkcija naudojama PHP scenarijuje, kad būtų galima priverstinai atsisiųsti bet kurį dabartinės vietos failą arba failą su failo keliu. Šios funkcijos sintaksė pateikta žemiau.



Sintaksė
int readfile (eilutė $ failo pavadinimas [, bool $ use_include_path = false [, išteklius $ kontekstas]])

Ši funkcija gali turėti tris argumentus. Pirmasis argumentas yra privalomas, o kiti du - neprivalomi. Pirmasis argumentas, $ failo pavadinimas , išsaugo failo arba failo pavadinimą kartu su atsisiuntimo keliu. Numatytoji antrojo parametro vertė, $ use_include_path , yra klaidinga ir bus nustatyta kaip tiesa, jei failo pavadinimas su keliu bus naudojamas pirmajame argumente. Trečias argumentas, $ kontekstas , naudojamas kontekstinio srauto ištekliams nurodyti. Ši funkcija grąžina iš pirmojo argumento paminėto failo nuskaitytų baitų skaičių. Šios funkcijos naudojimas parodytas šiuose dviejuose pavyzdžiuose.

1 pavyzdys: atsisiųskite failą su failo pavadinimu

Šiame pavyzdyje sukursime HTML failą su šiuo kodu, kur failo pavadinimas bus perduotas kaip URL pavadintas parametras kelias , o šio parametro reikšmė bus perduota PHP failui pavadinimu parsisiųsti. php .

parsisiųsti2.html

< html >
< galva >
< titulas > Atsisiųsti failus</ titulas >
</ galva >
< kūnas >
< p >< į href='download.php? path = abc.txt'> AtsisiųstiTEKSTASfailą</ į ></ p >
< p >< į href='download.php? path = horizon.zip'> Atsisiųsti ZIP failą</ į ></ p >
< p >< į href='download.php? path = paskaita.pdf'> Atsisiųskite PDF failą</ į ></ p >
< p >< į href='download.php? path = rose.jpg'> Atsisiųskite JPG failą</ į ></ p >
</ kūnas >
</ html >

Mes sukursime PHP failą su šiuo kodu, kad priverstinai atsisiųstume failą. Čia, dingo) funkcija naudojama patikrinti, ar $ _GET [„kelias“] yra apibrėžtas. Jei kintamasis yra apibrėžtas, file_exists () funkcija naudojama patikrinti, ar failas yra serveryje. Toliau, antraštė () funkcija naudojama norint nustatyti reikiamą antraštės informaciją prieš naudojant readfile () funkcija. The bazinis pavadinimas () funkcija naudojama failo pavadinimui gauti, o failo dydis() funkcija naudojama failo dydžiui skaityti baitais, kuris bus rodomas atidarymo dialogo lange failui atsisiųsti. The praplauti () funkcija naudojama išvesties buferiui išvalyti. The readfile () funkcija čia naudojama tik su failo pavadinimu.

parsisiųsti. php



jei( dingo ($ _GET['kelias']))
{
// Skaityti failo pavadinimą
$ failo pavadinimas = $ _GET['kelias'];
// Patikrinkite, ar failas yra, ar ne
jei( failas_egzistuoja ($ failo pavadinimas)) {

// Apibrėžkite antraštės informaciją
antraštė („Turinio aprašas: failų perkėlimas“);
antraštė („Turinio tipas: programa/okteto srautas“);
antraštė („Talpyklos valdymas: nėra talpyklos, reikia iš naujo patvirtinti“);
antraštė („Galiojimo laikas baigiasi: 0“);
antraštė („Turinys-išdėstymas: priedas; failo pavadinimas = '. bazinis pavadinimas ($ failo pavadinimas).'' ');
antraštė („Turinio ilgis:“ . failo dydis ($ failo pavadinimas));
antraštė („Pragma: vieša“);

// Išvalyti sistemos išvesties buferį
praplauti ();

// Skaitykite failo dydį
readfile ($ failo pavadinimas);

// Nutraukti iš scenarijaus
į ();
}
Kitas{
išmetė 'Failas neegzistuoja.';
}
}
Kitas
išmetė 'Failo pavadinimas nėra apibrėžtas.'
?>

Išvestis
Spustelėjus vaizdo failo atsisiuntimo nuorodą, pasirodys toks išvestis. Failo dydis rožė.jpg vaizdas yra 27,2 KB , kaip parodyta dialogo lange. Failą galite atsisiųsti pasirinkę Išsaugoti failą radijo mygtuką ir paspauskite Gerai mygtuką.

2 pavyzdys: atsisiųskite failą naudodami failo kelią

Jei failas yra nurodytoje failo vietoje, URL adresas turės nurodyti failo kelią. Šiame pavyzdyje sukursime HTML failą su šiuo kodu, kuris perduos failo pavadinimą su failo keliu:

parsisiųsti3.html

< html >
< galva >
< titulas >Parsisiųsti failus</ titulas >
</ galva >
< kūnas >
< p >< į href='download.php? path = downloads/paskaita.pdf'>Parsisiųsti PDF failą</ į ></ p >
< p >< į href='download2.php? path = downloads/rose.jpg'>Atsisiųskite JPG failą</ į ></ p >
</ kūnas >
</ html >

Mes sukursime PHP failą su šiuo kodu, kad atsisiųstume failą iš failo kelio. Ankstesniame pavyzdyje esantis PHP kodas bus šiek tiek pakeistas, kad būtų galima atsisiųsti failą iš nurodyto kelio. The išvalyti talpyklą () funkcija naudojama talpyklai, kuri buvo išsaugota, išvalyti. Naudojami du argumentai readfile () funkcija.

parsisiųsti2.php


jei( dingo ($ _GET['kelias']))
{
// Skaitykite URL
$ url = $ _GET['kelias'];

// Išvalyti talpyklą
išvalyti skausmus ();

// Patikrinkite, ar failo kelias yra, ar ne
jei( failas_egzistuoja ($ url)) {

// Apibrėžkite antraštės informaciją
antraštė („Turinio aprašas: failų perkėlimas“);
antraštė („Turinio tipas: programa/okteto srautas“);
antraštė („Turinys-išdėstymas: priedas; failo pavadinimas = '. bazinis pavadinimas ($ url).'' ');
antraštė („Turinio ilgis:“ . failo dydis ($ url));
antraštė („Pragma: vieša“);

// Išvalyti sistemos išvesties buferį
praplauti ();

// Skaitykite failo dydį
readfile ($ url,tiesa);

// Nutraukti iš scenarijaus
į ();
}
Kitas{
išmetė 'Failo kelias neegzistuoja.';
}
}
išmetė 'Failo kelias nėra apibrėžtas.'

?>

Išvestis
Spustelėjus PDF failo atsisiuntimo nuorodą, pasirodys toks rezultatas.

Video pamoka

Išvada

Šiame straipsnyje buvo pateiktas paprastas būdas priverstinai atsisiųsti bet kurį failą naudojant PHP scenarijų, kad skaitytojai galėtų pridėti atsisiuntimo funkciją savo scenarijuje.