Ako stiahnuť súbor v PHP

How Download File Php



Na stiahnutie súboru s príponami nie je spravidla potrebný žiadny skript PHP exe a PSČ . Ak je umiestnenie súboru tohto typu súboru nastavené v priečinku href atribút elementu anchor, potom sa súbor automaticky stiahne, keď používateľ klikne na odkaz na stiahnutie. Niektoré súbory, ako napr obrázok súbory, PDF súbory, text súbory, CSV súbory atď. sa nesťahujú automaticky a namiesto toho sa otvoria v prehliadači, keď používateľ klikne na odkaz na stiahnutie. Tieto súbory je možné násilne stiahnuť v PHP pomocou súbor na čítanie () funkcia, ktorá sa nesťahuje automaticky. Tento tutoriál vám ukáže, ako násilne stiahnuť akýkoľvek súbor pomocou skriptu PHP.

Skontrolujte odkazy na stiahnutie

Predtým to bolo spomenuté PSČ a exe sťahovanie súborov automaticky, bez použitia skriptu PHP. Najprv vytvorte súbor HTML s nasledujúcim kódom. Tu sú definované štyri kotviace prvky na stiahnutie štyroch typov súborov. Medzi tieto typy súborov patria súbory TEXT, ZIP, PDF a JPG.







Stiahnuť.html



< html >
< hlava >
< titul >Sťahovanie súborov</ titul >
</ hlava >
< telo >
< p >< do href='abc.txt'>Stiahnite si súbor TEXT</ do ></ p >
< p >< do href='horizon.zip'>Stiahnite si súbor ZIP</ do ></ p >
< p >< do href='lecture.pdf'>Stiahnite si súbor PDF</ do ></ p >
< p >< do href='rose.jpg'>Stiahnite si súbor JPG</ do ></ p >
</ telo >
</ html >

Výkon
Po kliknutí na odkaz na súbor zip sa zobrazí nasledujúce dialógové okno na stiahnutie súboru. Užívateľ si potom môže stiahnuť súbor alebo ho otvoriť v správcovi archívov.




Ak kliknete na súbor s obrázkom, obrázok sa automaticky otvorí v prehliadači, ako ukazuje nasledujúci výstup. Súbor musíte uložiť, aby ste mohli vytvoriť kópiu súboru s obrázkom na lokálnom disku. Rovnako tak, keď kliknete na odkazy na súbory PDF a TEXT, obsah súboru sa otvorí v prehliadači bez sťahovania súboru. Riešením tohto problému je násilné stiahnutie súboru pomocou vstavaného PHP súbor na čítanie () funkciu.





Prevezmite súbor pomocou funkcie readfile ()

The súbor na čítanie () Funkcia sa používa v skripte PHP na násilné stiahnutie akéhokoľvek súboru aktuálneho umiestnenia alebo súboru s cestou k súboru. Syntax tejto funkcie je uvedená nižšie.



Syntax
int readfile (reťazec $ filename [, bool $ use_include_path = false [, zdroj $ kontext]])

Táto funkcia môže obsahovať tri argumenty. Prvý argument je povinný a ďalšie dva argumenty sú voliteľné. Prvý argument, $ názov súboru , uloží názov súboru alebo názov súboru s cestou, ktorá sa bude sťahovať. Predvolená hodnota druhého parametra, $ use_include_path , je false a bude nastavený na true, ak je v prvom argumente použitý názov súboru s cestou. Tretí argument, $ kontext , sa používa na označenie prostriedku kontextového toku. Táto funkcia vracia počet bajtov načítaných zo súboru uvedeného v prvom argumente. Použitie tejto funkcie je ukázané v nasledujúcich dvoch príkladoch.

Príklad 1: Stiahnutie súboru s názvom súboru

V tomto prípade vytvoríme súbor HTML s nasledujúcim kódom, kde bude názov súboru odoslaný ako parameter adresy URL s názvom cesta , a hodnota tohto parametra bude odoslaná do pomenovaného súboru PHP download.php .

download2.html

< html >
< hlava >
< titul > Stiahnuť súbory</ titul >
</ hlava >
< telo >
< p >< do href='download.php? cesta = abc.txt'> StiahnuťTEXTsúbor</ do ></ p >
< p >< do href='download.php? path = horizon.zip'> Stiahnite si súbor ZIP</ do ></ p >
< p >< do href='download.php? path = lecture.pdf'> Stiahnite si súbor PDF</ do ></ p >
< p >< do href='download.php? path = rose.jpg'> Stiahnite si súbor JPG</ do ></ p >
</ telo >
</ html >

Vytvoríme súbor PHP s nasledujúcim kódom na násilné stiahnutie súboru. Tu, preč) funkcia sa používa na kontrolu, či $ _GET ['cesta'] je definovaný. Ak je premenná definovaná, file_exists () funkcia sa používa na kontrolu, či súbor existuje na serveri. Ďalej, hlavička () funkcia sa používa na nastavenie potrebných informácií v hlavičke pred použitím súbor na čítanie () funkciu. The basename () funkcia sa používa na načítanie názvu súboru a súboru veľkosť súboru() funkcia sa používa na čítanie veľkosti súboru v bajtoch, ktorá sa zobrazí v úvodnom dialógovom okne na stiahnutie súboru. The spláchnuť() funkcia sa používa na vymazanie výstupnej vyrovnávacej pamäte. The súbor na čítanie () funkcia sa tu používa iba s názvom súboru.

download.php



keby( preč ($ _ZÍSKAJTE['cesta']))
{
// Prečítajte si názov súboru
$ názov súboru = $ _ZÍSKAJTE['cesta'];
// Skontrolujte, či súbor existuje alebo nie
keby( súbor_existuje ($ názov súboru)) {

// Definujte informácie v hlavičke
hlavička ('Content-Description: File Transfer');
hlavička („Content-Type: application/octet-stream“);
hlavička („Cache-Control: no-cache, must-revalidate“);
hlavička („Platnosť vyprší: 0“);
hlavička („Dispozícia obsahu: príloha; názov súboru = ''. základné meno ($ názov súboru).'' ');
hlavička („Dĺžka obsahu:“ . veľkosť súboru ($ názov súboru));
hlavička („Pragma: verejné“);

// Vymazanie vyrovnávacej pamäte výstupu systému
spláchnuť ();

// Prečítajte si veľkosť súboru
readfile ($ názov súboru);

// Ukončenie zo skriptu
the ();
}
inak{
zahodil 'Súbor neexistuje.';
}
}
inak
zahodil 'Názov súboru nie je definovaný.'
?>

Výkon
Nasledujúci výstup sa zobrazí po kliknutí na odkaz na stiahnutie súboru s obrázkom. Veľkosť súboru rose.jpg obrázok je 27,2 KB , ako je zobrazené v dialógovom okne. Súbor si môžete stiahnuť výberom položky Uloženie súboru prepínač a stlačením tlačidla OK tlačidlo.

Príklad 2: Stiahnutie súboru pomocou cesty k súboru

Ak súbor v danom umiestnení súboru existuje, cestu k súboru bude potrebné uviesť v adrese URL. V tomto prípade vytvoríme súbor HTML s nasledujúcim kódom, ktorý odovzdá názov súboru s cestou k súboru:

download3.html

< html >
< hlava >
< titul >Sťahovanie súborov</ titul >
</ hlava >
< telo >
< p >< do href='download.php? path = downloads/lecture.pdf'>Stiahnite si súbor PDF</ do ></ p >
< p >< do href='download2.php? path = downloads/rose.jpg'>Stiahnite si súbor JPG</ do ></ p >
</ telo >
</ html >

Vytvoríme súbor PHP s nasledujúcim kódom na stiahnutie súboru z cesty k súboru. Kód PHP v predchádzajúcom príklade bude mierne upravený, aby sa súbor stiahol z danej cesty. The clearstatecache () funkcia sa používa na vymazanie vyrovnávacej pamäte, ktorá bola predtým uložená. V súbore sú použité dva argumenty súbor na čítanie () funkciu.

download2.php


keby( preč ($ _ZÍSKAJTE['cesta']))
{
// Prečítajte si URL
$ URL = $ _ZÍSKAJTE['cesta'];

// Vymažte vyrovnávaciu pamäť
clearstatcache ();

// Skontrolujte, či cesta k súboru existuje alebo nie
keby( súbor_existuje ($ URL)) {

// Definujte informácie v hlavičke
hlavička ('Content-Description: File Transfer');
hlavička („Content-Type: application/octet-stream“);
hlavička („Dispozícia obsahu: príloha; názov súboru = ''. základné meno ($ URL).'' ');
hlavička („Dĺžka obsahu:“ . veľkosť súboru ($ URL));
hlavička („Pragma: verejné“);

// Vymazanie vyrovnávacej pamäte výstupu systému
spláchnuť ();

// Prečítajte si veľkosť súboru
readfile ($ URL,pravda);

// Ukončenie zo skriptu
the ();
}
inak{
zahodil 'Cesta k súboru neexistuje.';
}
}
zahodil 'Cesta k súboru nie je definovaná.'

?>

Výkon
Po kliknutí na odkaz na stiahnutie súboru PDF sa zobrazí nasledujúci výstup.

Video-návod

Záver

Tento článok poskytol jednoduchý spôsob, ako násilne stiahnuť ľubovoľný súbor pomocou skriptu PHP, aby pomohol čitateľom pridať do svojho skriptu funkciu sťahovania.