Preverite povezave za prenos
Prej je bilo omenjeno, da zadrgo in exe datoteke se samodejno naložijo brez uporabe skripta PHP. Najprej ustvarite datoteko HTML z naslednjo kodo. Tu so definirani štirje sidrni elementi za prenos štirih vrst datotek. Te vrste datotek vključujejo datoteke TEXT, ZIP, PDF in JPG.
Download.html
< html >
< glavo >
< naslov >Prenesite datoteke</ naslov >
</ glavo >
< telo >
< str >< do href='abc.txt'>Prenesite datoteko TEXT</ do ></ str >
< str >< do href='horizon.zip'>Prenesite datoteko ZIP</ do ></ str >
< str >< do href='predavanje.pdf'>Prenesite datoteko PDF</ do ></ str >
< str >< do href='roza.jpg'>Prenesite datoteko JPG</ do ></ str >
</ telo >
</ html >
Izhod
Po prenosu datoteke zip se prikaže naslednje pogovorno okno za prenos datoteke. Uporabnik lahko nato prenese datoteko ali jo odpre v upravitelju arhivov.
Če kliknete slikovno datoteko, se bo slika samodejno odprla v brskalniku, kot je prikazano v naslednjem izhodu. Da kopirate slikovno datoteko na lokalni pogon, jo morate shraniti. Na enak način, ko kliknete povezave do datotek PDF in TEXT, se vsebina datoteke odpre v brskalniku brez prenosa datoteke. Rešitev te težave je, da datoteko na silo naložite z vgrajenim PHP-jem readfile () funkcijo.
Prenesite datoteko s funkcijo readfile ()
The readfile () funkcija se uporablja v skriptu PHP za prisilni prenos katere koli datoteke trenutne lokacije ali datoteke s potjo do datoteke. Sintaksa te funkcije je podana spodaj.
Sintaksa
int readfile (niz $ filename [, bool $ use_include_path = false [, vir $ context]])
Ta funkcija lahko sprejme tri argumente. Prvi argument je obvezen, druga dva pa neobvezna. Prvi argument, $ ime datoteke , shrani ime datoteke ali ime datoteke s potjo, ki se bo naložila. Privzeta vrednost drugega parametra, $ use_include_path , je false in bo nastavljeno na true, če je ime datoteke s potjo uporabljeno v prvem argumentu. Tretji argument, $ context , se uporablja za označevanje vira kontekstnega toka. Ta funkcija vrne število bajtov, prebranih iz datoteke, omenjene v prvem argumentu. Uporaba te funkcije je prikazana v naslednjih dveh primerih.
Primer 1: Prenesite datoteko z imenom datoteke
V tem primeru bomo ustvarili datoteko HTML z naslednjo kodo, kjer bo ime datoteke posredovano kot parameter URL -ja z imenom pot in vrednost tega parametra bo posredovana datoteki PHP z imenom download.php .
download2.html
< html >< glavo >
< naslov > Prenos datotek</ naslov >
</ glavo >
< telo >
< str >< do href='download.php? path = abc.txt'> PrenesiBESEDILOmapa</ do ></ str >
< str >< do href='download.php? path = horizon.zip'> Prenesite datoteko ZIP</ do ></ str >
< str >< do href='download.php? path = predavanje.pdf'> Prenesite datoteko PDF</ do ></ str >
< str >< do href='download.php? path = rose.jpg'> Prenesite datoteko JPG</ do ></ str >
</ telo >
</ html >
Za prisilno nalaganje datoteke bomo ustvarili datoteko PHP z naslednjo kodo. Tukaj, odšel) Funkcija se uporablja za preverjanje, ali je $ _GET ['pot'] je definirano. Če je spremenljivka definirana, se file_exists () Funkcija se uporablja za preverjanje, ali datoteka obstaja v strežniku. Nato, header () Funkcija se uporablja za nastavitev potrebnih informacij o glavi pred uporabo readfile () funkcijo. The basename () funkcija se uporablja za pridobivanje imena datoteke in velikost datoteke() funkcija se uporablja za branje velikosti datoteke v bajtih, ki bo prikazana v pogovornem oknu za odpiranje datoteke. The flush () Funkcija se uporablja za brisanje izhodnega medpomnilnika. The readfile () Funkcija se tukaj uporablja samo z imenom datoteke.
download.php
če( odšel ($ _GET['pot']))
{
// preberite ime datoteke
$ ime datoteke = $ _GET['pot'];
// Preverite, ali datoteka obstaja ali ne
če( file_exists ($ ime datoteke)) {
// Določimo informacije o glavi
glavo ('Opis vsebine: prenos datotek');
glavo ('Content-Type: application/octet-stream');
glavo ('Cache-Control: no-cache, must-revalidate');
glavo ('Poteče: 0');
glavo („Vsebina-dispozicija: priloga; ime datoteke = ''. basename ($ ime datoteke).'' ');
glavo ('Dolžina vsebine:' . velikost datoteke ($ ime datoteke));
glavo ('Pragma: javna');
// Počisti sistemski izhodni vmesnik
splakniti ();
// Preberite velikost datoteke
readfile ($ ime datoteke);
// Končaj iz skripta
the ();
}
drugače{
vrgel ven 'Datoteka ne obstaja.';
}
}
drugače
vrgel ven 'Ime datoteke ni določeno.'
?>
Izhod
Naslednji izhod se prikaže, ko kliknete povezavo za prenos slikovne datoteke. Velikost datoteke rose.jpg slika je 27,2 KB , kot je prikazano v pogovornem oknu. Datoteko lahko prenesete tako, da izberete Shranite datoteko izbirnega gumba in pritisnite v redu gumb.
Primer 2: Prenesite datoteko s potjo datoteke
Če datoteka obstaja na danem mestu datoteke, jo bo treba pot URL -ja navesti v URL -ju. V tem primeru bomo ustvarili datoteko HTML z naslednjo kodo, ki bo podala ime datoteke s potjo datoteke:
download3.html
< html >< glavo >
< naslov >Prenesite datoteke</ naslov >
</ glavo >
< telo >
< str >< do href='download.php? path = prenosi/predavanje.pdf'>Prenesite datoteko PDF</ do ></ str >
< str >< do href='download2.php? path = downloads/rose.jpg'>Prenesite datoteko JPG</ do ></ str >
</ telo >
</ html >
Za prenos datoteke s poti do datoteke bomo ustvarili datoteko PHP z naslednjo kodo. Koda PHP v prejšnjem primeru bo nekoliko spremenjena za prenos datoteke z dane poti. The clearstatecache () Funkcija se uporablja za brisanje predpomnilnika, ki je bil prej shranjen. V argumentu sta uporabljena dva argumenta readfile () funkcijo.
download2.php
če( odšel ($ _GET['pot']))
{
// Preberite url
$ url = $ _GET['pot'];
// Počisti predpomnilnik
clearstatcache ();
// Preverite, ali pot do datoteke obstaja ali ne
če( file_exists ($ url)) {
// Določimo informacije o glavi
glavo ('Opis vsebine: prenos datotek');
glavo ('Content-Type: application/octet-stream');
glavo („Vsebina-dispozicija: priloga; ime datoteke = ''. basename ($ url).'' ');
glavo ('Dolžina vsebine:' . velikost datoteke ($ url));
glavo ('Pragma: javna');
// Počisti sistemski izhodni vmesnik
splakniti ();
// Preberite velikost datoteke
readfile ($ url,prav);
// Končaj iz skripta
the ();
}
drugače{
vrgel ven 'Pot do datoteke ne obstaja.';
}
}
vrgel ven 'Pot datoteke ni določena.'
?>
Izhod
Ko kliknete povezavo za prenos datoteke PDF, se prikaže naslednji izhod.
Video vadnica
Zaključek
Ta članek je na preprost način prisilno naložil katero koli datoteko s skriptom PHP in bralcem pomagal dodati funkcijo prenosa v svoj skript.