Paano Mag-download ng isang File sa PHP

How Download File Php



Pangkalahatan, walang kinakailangang PHP script upang mag-download ng isang file na may mga extension exe at zip . Kung ang lokasyon ng file ng ganitong uri ng file ay nakatakda sa href katangian ng elemento ng anchor, pagkatapos ay awtomatikong mag-download ang file kapag nag-click ang gumagamit sa link ng pag-download. Ang ilang mga file, tulad ng imahe mga file, PDF mga file, text mga file, CSV mga file, atbp., huwag awtomatikong mag-download, at sa halip, buksan sa browser kapag nag-click ang gumagamit sa link sa pag-download. Ang mga file na ito ay maaaring ma-download nang pilit sa paggamit ng PHP ang readfile () pagpapaandar na hindi awtomatikong mag-download. Ipinapakita sa iyo ng tutorial na ito kung paano puwersahang mag-download ng anumang file gamit ang PHP script.

Suriin ang Mga Link sa Pag-download

Nauna nang nabanggit na zip at exe awtomatikong mag-download ng mga file, nang hindi gumagamit ng PHP script. Una, lumikha ng isang HTML file na may sumusunod na code. Dito, tinukoy ang apat na mga elemento ng angkla upang i-download ang apat na uri ng mga file. Kasama sa mga uri ng file na ito ang TEXT, ZIP, PDF, at JPG file.







Mag-download.html



< html >
< ulo >
< pamagat >Mag-download ng Mga File</ pamagat >
</ ulo >
< katawan >
< p >< sa href='abc.txt'>Mag-download ng file na TEXT</ sa ></ p >
< p >< sa href='abot-tanaw.zip'>Mag-download ng ZIP file</ sa ></ p >
< p >< sa href='lecture.pdf'>Mag-download ng PDF file</ sa ></ p >
< p >< sa href='rose.jpg'>Mag-download ng file na JPG</ sa ></ p >
</ katawan >
</ html >

Paglabas
Ang sumusunod na kahon ng dayalogo ay lilitaw upang i-download ang file pagkatapos i-click ang link ng zip file. Maaari nang mag-download ang gumagamit ng file o buksan ang file sa manager ng archive.




Kung nag-click ka sa file ng imahe, ang imahe ay awtomatikong bubuksan sa browser, tulad ng ipinakita sa sumusunod na output. Dapat mong i-save ang file upang makagawa ng isang kopya ng file ng imahe sa lokal na drive. Sa parehong paraan, kapag nag-click ka sa mga link ng PDF at TEXT file, ang nilalaman ng file ay bubuksan sa browser nang hindi naida-download ang file. Ang solusyon sa problemang ito ay upang i-download ang file nang sapilitang gamit ang built-in na PHP readfile () pagpapaandar





Mag-download ng File Gamit ang readfile () Function

Ang readfile () Ginagamit ang pagpapaandar sa script ng PHP upang sapilitang mag-download ng anumang file ng kasalukuyang lokasyon, o ang file na may file path. Ang syntax ng pagpapaandar na ito ay ibinibigay sa ibaba.



Syntax
int readfile (string $ filename [, bool $ use_include_path = false [, mapagkukunang $ konteksto]])

Ang pagpapaandar na ito ay maaaring tumagal ng tatlong mga argumento. Ang unang argumento ay sapilitan, at ang dalawa pang mga argumento ay opsyonal. Ang unang pagtatalo, $ filename , iniimbak ang filename o filename na may path na mag-download. Ang default na halaga ng pangalawang parameter, $ use_include_path , ay hindi totoo at maitatakda sa totoo kung ang filename na may landas ay ginamit sa unang pagtatalo. Ang pangatlong pagtatalo, $ konteksto , ay ginagamit upang ipahiwatig ang mapagkukunan ng stream ng konteksto. Ibinabalik ng pagpapaandar na ito ang bilang ng mga byte na nabasa mula sa file na nabanggit sa unang argumento. Ang mga gamit ng pagpapaandar na ito ay ipinapakita sa mga sumusunod na dalawang halimbawa.

Halimbawa 1: Mag-download ng File na may Filename

Sa halimbawang ito, lilikha kami ng isang HTML file na may sumusunod na code, kung saan ipapasa ang pangalan ng file bilang isang parameter ng URL na pinangalanan landas , at ang halaga ng parameter na ito ay ipapasa sa pinangalanang PHP file i-download.php .

i-download2.html

< html >
< ulo >
< pamagat > Mag-download ng Mga File</ pamagat >
</ ulo >
< katawan >
< p >< sa href='download.php? path = abc.txt'> Mag-downloadTEXTfile</ sa ></ p >
< p >< sa href='download.php? path = horizon.zip'> Mag-download ng ZIP file</ sa ></ p >
< p >< sa href='download.php? path = lecture.pdf'> Mag-download ng PDF file</ sa ></ p >
< p >< sa href='download.php? path = rose.jpg'> Mag-download ng file na JPG</ sa ></ p >
</ katawan >
</ html >

Lilikha kami ng PHP file na may sumusunod na code upang mai-download ang file nang sapilitang. Narito, ang wala na Ginagamit ang pagpapaandar upang suriin kung ang $ _GET [‘path’] ay tinukoy. Kung tinukoy ang variable, ang file_exists () Ginagamit ang pagpapaandar upang suriin kung ang file ay mayroon sa server. Susunod, ang header () Ginagamit ang pagpapaandar upang maitakda ang kinakailangang impormasyon ng header bago gamitin ang readfile () pagpapaandar Ang basename () Ginagamit ang pagpapaandar upang makuha ang filename, at ang fileize () Ginagamit ang pagpapaandar upang mabasa ang laki ng file sa mga byte, na ipapakita sa pambungad na kahon ng dialogo upang mai-download ang file. Ang flush () Ginagamit ang pagpapaandar upang malinis ang output buffer. Ang readfile () ang pagpapaandar ay ginagamit lamang sa filename, dito.

i-download.php



kung( wala na ($ _GET['landas']))
{
// Basahin ang filename
$ filename = $ _GET['landas'];
// Suriin ang file na mayroon o hindi
kung( file_exists ($ filename)) {

// Tukuyin ang impormasyon ng header
header ('Paglalarawan sa Nilalaman: Paglipat ng File');
header ('Uri ng Nilalaman: application / octet-stream');
header ('Cache-Control: no-cache, must-revalidate');
header ('Mag-e-expire: 0');
header ('Disposisyon ng Nilalaman: pagkakabit; filename = '. basename ($ filename).'' ');
header ('Haba ng Nilalaman:' . fileize ($ filename));
header ('Pragma: pampubliko');

// I-clear ang buffer ng output ng system
mamula ();

// Basahin ang laki ng file
basahin muli ($ filename);

// Tapusin mula sa script
ang ();
}
iba pa{
itinapon 'Walang file.';
}
}
iba pa
itinapon 'Ang filename ay hindi tinukoy.'
?>

Paglabas
Lilitaw ang sumusunod na output pagkatapos ng pag-click sa link ng pag-download ng file ng imahe. Ang laki ng file ng rosas.jpg imahe ay 27.2 KB , tulad ng ipinakita sa dialog box. Maaari mong i-download ang file sa pamamagitan ng pagpili ng I-save ang File radio button at pagpindot sa OK lang pindutan

Halimbawa 2: Mag-download ng File na may Path ng File

Kung ang file ay mayroon sa ibinigay na lokasyon ng file, ang landas ng file ay kinakailangan na banggitin sa URL. Sa halimbawang ito, lilikha kami ng isang HTML file na may sumusunod na code, na magpapasa sa filename kasama ang file path:

i-download3.html

< html >
< ulo >
< pamagat >Mag-download ng Mga File</ pamagat >
</ ulo >
< katawan >
< p >< sa href='download.php? path = downloads / lecture.pdf'>Mag-download ng PDF file</ sa ></ p >
< p >< sa href='download2.php? path = downloads / rose.jpg'>Mag-download ng file na JPG</ sa ></ p >
</ katawan >
</ html >

Lilikha kami ng isang PHP file na may sumusunod na code upang mag-download ng isang file mula sa file path. Ang PHP code sa nakaraang halimbawa ay bahagyang mababago upang mai-download ang file mula sa ibinigay na path. Ang clearstatecache () Ginagamit ang pagpapaandar upang malinis ang cache na dating naimbak. Dalawang argumento ang ginamit sa readfile () pagpapaandar

i-download2.php


kung( wala na ($ _GET['landas']))
{
// Basahin ang url
$ url = $ _GET['landas'];

// I-clear ang cache
clearstatcache ();

// Suriin ang path ng file na mayroon o hindi
kung( file_exists ($ url)) {

// Tukuyin ang impormasyon ng header
header ('Paglalarawan sa Nilalaman: Paglipat ng File');
header ('Uri ng Nilalaman: application / octet-stream');
header ('Disposisyon ng Nilalaman: pagkakabit; filename = '. basename ($ url).'' ');
header ('Haba ng Nilalaman:' . fileize ($ url));
header ('Pragma: pampubliko');

// I-clear ang buffer ng output ng system
mamula ();

// Basahin ang laki ng file
basahin muli ($ url,totoo);

// Tapusin mula sa script
ang ();
}
iba pa{
itinapon 'Walang path ng file.';
}
}
itinapon 'Ang landas ng file ay hindi tinukoy.'

?>

Paglabas
Matapos ma-click ang link sa pag-download ng PDF file, lilitaw ang sumusunod na output.

Video-tutorial

Konklusyon

Nagbigay ang artikulong ito ng isang simpleng paraan upang puwersahang i-download ang anumang file gamit ang PHP script, upang matulungan ang mga mambabasa na idagdag ang tampok na pag-download sa kanilang script.