Kā lejupielādēt failu PHP

How Download File Php



Parasti, lai lejupielādētu failu ar paplašinājumiem, nav nepieciešams PHP skripts exe un rāvējslēdzējs . Ja šāda veida faila atrašanās vieta ir iestatīta sadaļā href enkura elementa atribūtu, tad fails tiek automātiski lejupielādēts, kad lietotājs noklikšķina uz lejupielādes saites. Daži faili, piemēram attēlu failus, PDF failus, teksts failus, CSV faili utt., netiek lejupielādēti automātiski, bet tiek atvērti pārlūkprogrammā, kad lietotājs noklikšķina uz lejupielādes saites. Šos failus var piespiedu kārtā lejupielādēt PHP, izmantojot lasīšanas fails () funkcija, kas netiek lejupielādēta automātiski. Šī apmācība parāda, kā piespiedu kārtā lejupielādēt jebkuru failu, izmantojot PHP skriptu.

Pārbaudiet lejupielādes saites

Iepriekš tika minēts, ka rāvējslēdzējs un exe faili tiek lejupielādēti automātiski, neizmantojot PHP skriptu. Vispirms izveidojiet HTML failu ar šādu kodu. Šeit ir definēti četri enkura elementi, lai lejupielādētu četru veidu failus. Šie failu tipi ietver TEXT, ZIP, PDF un JPG failus.







Lejupielādēt.html



< html >
< galvu >
< titulu >Lejupielādēt failus</ titulu >
</ galvu >
< ķermenis >
< lpp >< uz href='abc.txt'>Lejupielādēt teksta failu</ uz ></ lpp >
< lpp >< uz href='horizon.zip'>Lejupielādēt ZIP failu</ uz ></ lpp >
< lpp >< uz href='lekcija.pdf'>Lejupielādēt PDF failu</ uz ></ lpp >
< lpp >< uz href='rose.jpg'>Lejupielādēt JPG failu</ uz ></ lpp >
</ ķermenis >
</ html >

Izeja
Pēc noklikšķināšanas uz zip faila saites parādīsies šāds dialoglodziņš, lai lejupielādētu failu. Pēc tam lietotājs var lejupielādēt failu vai atvērt to arhīva pārvaldniekā.




Ja noklikšķināsit uz attēla faila, attēls tiks automātiski atvērts pārlūkprogrammā, kā parādīts nākamajā izvadē. Fails ir jāsaglabā, lai kopētu attēla failu lokālajā diskā. Tādā pašā veidā, noklikšķinot uz PDF un TEXT failu saitēm, faila saturs tiks atvērts pārlūkprogrammā, neielādējot failu. Šīs problēmas risinājums ir lejupielādēt failu piespiedu kārtā, izmantojot iebūvēto PHP readfile () funkciju.





Lejupielādējiet failu, izmantojot funkciju readfile ()

The readfile () funkcija tiek izmantota PHP skriptos, lai piespiedu kārtā lejupielādētu jebkuru pašreizējās atrašanās vietas failu vai failu ar faila ceļu. Šīs funkcijas sintakse ir parādīta zemāk.



Sintakse
int readfile (virkne $ faila nosaukums [, bool $ use_include_path = false [, resurss $ konteksts]])

Šai funkcijai var būt trīs argumenti. Pirmais arguments ir obligāts, bet pārējie divi nav obligāti. Pirmais arguments, $ faila nosaukums , saglabā faila nosaukumu vai faila nosaukumu kopā ar ceļu, kas tiks lejupielādēts. Otrā parametra noklusējuma vērtība, $ use_include_path , ir nepatiess un tiks iestatīts uz patiess, ja pirmajā argumentā tiks izmantots faila nosaukums ar ceļu. Trešais arguments, $ konteksts , tiek izmantots, lai norādītu konteksta straumes resursu. Šī funkcija atgriež baitu skaitu, kas nolasīts no faila, kas minēts pirmajā argumentā. Šīs funkcijas pielietojums ir parādīts šādos divos piemēros.

1. piemērs: lejupielādējiet failu ar faila nosaukumu

Šajā piemērā mēs izveidosim HTML failu ar šādu kodu, kur faila nosaukums tiks nodots kā norādītā URL parametrs ceļš , un šī parametra vērtība tiks nodota PHP failam ar nosaukumu download.php .

download2.html

< html >
< galvu >
< titulu > Lejupielādēt failus</ titulu >
</ galvu >
< ķermenis >
< lpp >< uz href='download.php? path = abc.txt'> LejupielādētTEKSTSfailu</ uz ></ lpp >
< lpp >< uz href='download.php? path = horizon.zip'> Lejupielādēt ZIP failu</ uz ></ lpp >
< lpp >< uz href='download.php? path = lekcija.pdf'> Lejupielādēt PDF failu</ uz ></ lpp >
< lpp >< uz href='download.php? path = rose.jpg'> Lejupielādēt JPG failu</ uz ></ lpp >
</ ķermenis >
</ html >

Mēs izveidosim PHP failu ar šādu kodu, lai piespiedu kārtā lejupielādētu failu. Lūk, pagājis) funkcija tiek izmantota, lai pārbaudītu, vai $ _GET [‘ceļš’] ir definēts. Ja mainīgais ir definēts, file_exists () funkcija tiek izmantota, lai pārbaudītu, vai fails serverī eksistē. Tālāk, galvene () funkcija tiek izmantota, lai iestatītu nepieciešamo galvenes informāciju pirms readfile () funkciju. The basename () funkcija tiek izmantota, lai izgūtu faila nosaukumu, un faila lielums() funkcija tiek izmantota, lai nolasītu faila lielumu baitos, kas tiks parādīts atvēršanas dialoglodziņā, lai lejupielādētu failu. The flush () funkcija tiek izmantota, lai notīrītu izvades buferi. The readfile () funkcija šeit tiek izmantota tikai ar faila nosaukumu.

download.php



ja( aizgājis ($ _GET['ceļš']))
{
// Izlasiet faila nosaukumu
$ faila nosaukums = $ _GET['ceļš'];
// Pārbaudiet, vai fails pastāv vai nav
ja( fails_eksistē ($ faila nosaukums)) {

// Definējiet galvenes informāciju
galvene ('Satura apraksts: failu pārsūtīšana');
galvene ('Satura veids: lietojumprogramma/okteta straume');
galvene ('Kešatmiņas kontrole: nav kešatmiņas, jāpārbauda atkārtoti');
galvene ('Derīguma termiņš: 0');
galvene ('Satura izvietojums: pielikums; faila nosaukums = '. pamatnosaukums ($ faila nosaukums).'' ');
galvene ('Satura garums:' . faila lielums ($ faila nosaukums));
galvene ('Pragma: publiska');

// Notīrīt sistēmas izvades buferi
skalošana ();

// Izlasiet faila lielumu
izlases fails ($ faila nosaukums);

// Pārtraukt no skripta
un ();
}
citādi{
izmest ārā 'Fails neeksistē.';
}
}
citādi
izmest ārā 'Faila nosaukums nav definēts.'
?>

Izeja
Pēc noklikšķināšanas uz attēla faila lejupielādes saites parādīsies šāda izvade. Faila lielums roze.jpg tēls ir 27,2 KB , kā parādīts dialoglodziņā. Jūs varat lejupielādēt failu, izvēloties Saglabāt failu radio pogu un nospiediet labi pogu.

2. piemērs: lejupielādējiet failu ar faila ceļu

Ja fails pastāv norādītajā faila atrašanās vietā, URL būs jānorāda faila ceļš. Šajā piemērā mēs izveidosim HTML failu ar šādu kodu, kas nodos faila nosaukumu kopā ar faila ceļu:

download3.html

< html >
< galvu >
< titulu >Lejupielādēt failus</ titulu >
</ galvu >
< ķermenis >
< lpp >< uz href='download.php? path = downloads/lekcija.pdf'>Lejupielādēt PDF failu</ uz ></ lpp >
< lpp >< uz href='download2.php? path = downloads/rose.jpg'>Lejupielādēt JPG failu</ uz ></ lpp >
</ ķermenis >
</ html >

Mēs izveidosim PHP failu ar šādu kodu, lai lejupielādētu failu no faila ceļa. Iepriekšējā piemērā esošais PHP kods tiks nedaudz mainīts, lai lejupielādētu failu no norādītā ceļa. The notīrīt kešatmiņu () funkcija tiek izmantota, lai notīrītu iepriekš saglabāto kešatmiņu. Sadaļā tiek izmantoti divi argumenti readfile () funkciju.

download2.php


ja( aizgājis ($ _GET['ceļš']))
{
// Lasīt url
$ url = $ _GET['ceļš'];

// Notīriet kešatmiņu
notīrīt sāpes ();

// Pārbaudiet, vai faila ceļš ir vai nav
ja( fails_eksistē ($ url)) {

// Definējiet galvenes informāciju
galvene ('Satura apraksts: failu pārsūtīšana');
galvene ('Satura veids: lietojumprogramma/okteta straume');
galvene ('Satura izvietojums: pielikums; faila nosaukums = '. pamatnosaukums ($ url).'' ');
galvene ('Satura garums:' . faila lielums ($ url));
galvene ('Pragma: publiska');

// Notīrīt sistēmas izvades buferi
skalošana ();

// Izlasiet faila lielumu
izlases fails ($ url,taisnība);

// Pārtraukt no skripta
un ();
}
citādi{
izmest ārā 'Faila ceļš neeksistē.';
}
}
izmest ārā 'Faila ceļš nav definēts.'

?>

Izeja
Pēc noklikšķināšanas uz PDF faila lejupielādes saites tiks parādīta šāda izvade.

Video pamācība

Secinājums

Šajā rakstā tika sniegts vienkāršs veids, kā piespiedu kārtā lejupielādēt jebkuru failu, izmantojot PHP skriptu, lai palīdzētu lasītājiem pievienot skriptam lejupielādes funkciju.