Jak stáhnout soubor v PHP

How Download File Php

Ke stažení souboru s příponami není obecně vyžadován žádný skript PHP exe a zip . Pokud je umístění souboru tohoto typu souboru nastaveno v souboru href atribut kotevního prvku, pak se soubor automaticky stáhne, když uživatel klikne na odkaz ke stažení. Některé soubory, jako např obraz soubory, PDF soubory, text soubory, CSV soubory atd. se nestahují automaticky a místo toho se otevřou v prohlížeči, když uživatel klikne na odkaz ke stažení. Tyto soubory lze stáhnout násilně v PHP pomocí readfile () funkce, která se automaticky nestáhne. Tento tutoriál vám ukáže, jak násilně stáhnout libovolný soubor pomocí skriptu PHP.

Zkontrolujte odkazy ke stažení

Dříve to bylo zmíněno zip a exe stahování souborů automaticky, bez použití skriptu PHP. Nejprve vytvořte soubor HTML s následujícím kódem. Zde jsou definovány čtyři kotevní prvky pro stažení čtyř typů souborů. Tyto typy souborů zahrnují soubory TEXT, ZIP, PDF a JPG.



Stáhnout.html



< html >
< hlava >
< titul >Stáhnout soubory</ titul >
</ hlava >
< tělo >
< p >< na href='abc.txt'>Stáhnout soubor TEXT</ na ></ p >
< p >< na href='horizon.zip'>Stáhnout ZIP soubor</ na ></ p >
< p >< na href='lecture.pdf'>Stáhnout soubor PDF</ na ></ p >
< p >< na href='rose.jpg'>Stáhnout soubor JPG</ na ></ p >
</ tělo >
</ html >

Výstup
Po kliknutí na odkaz na soubor zip se zobrazí následující dialogové okno pro stažení souboru. Uživatel si pak může soubor stáhnout nebo jej otevřít ve správci archivů.




Pokud kliknete na soubor obrázku, obrázek se automaticky otevře v prohlížeči, jak ukazuje následující výstup. Chcete -li vytvořit kopii souboru obrázku na místním disku, musíte soubor uložit. Stejně tak, když kliknete na odkazy na soubory PDF a TEXT, obsah souboru se otevře v prohlížeči bez stahování souboru. Řešením tohoto problému je násilné stažení souboru pomocí vestavěného PHP readfile () funkce.

Stáhnout soubor pomocí funkce readfile ()

The readfile () Funkce se ve skriptu PHP používá k násilnému stažení libovolného souboru aktuálního umístění nebo souboru s cestou k souboru. Syntaxe této funkce je uvedena níže.



Syntax
int readfile (řetězec $ název_souboru [, bool $ use_include_path = false [, zdroj $ kontext]])

Tato funkce může mít tři argumenty. První argument je povinný a další dva argumenty jsou nepovinné. První argument, $ název_souboru , uloží název souboru nebo název souboru s cestou, která se stáhne. Výchozí hodnota druhého parametru, $ use_include_path , je false a bude nastaveno na true, pokud je v prvním argumentu použit název souboru s cestou. Třetí argument, $ kontext , se používá k označení prostředku kontextového proudu. Tato funkce vrací počet bajtů načtených ze souboru uvedeného v prvním argumentu. Použití této funkce je ukázáno v následujících dvou příkladech.

Příklad 1: Stažení souboru s názvem souboru

V tomto příkladu vytvoříme soubor HTML s následujícím kódem, kde bude název souboru předán jako parametr adresy URL s názvem cesta , a hodnota tohoto parametru bude předána do pojmenovaného souboru PHP download.php .

download2.html

< html >
< hlava >
< titul > Stáhnout soubory</ titul >
</ hlava >
< tělo >
< p >< na href='download.php? path = abc.txt'> StáhnoutTEXTsoubor</ na ></ p >
< p >< na href='download.php? path = horizon.zip'> Stáhnout soubor ZIP</ na ></ p >
< p >< na href='download.php? path = lecture.pdf'> Stáhnout soubor PDF</ na ></ p >
< p >< na href='download.php? path = rose.jpg'> Stáhnout soubor JPG</ na ></ p >
</ tělo >
</ html >

Vytvoříme soubor PHP s následujícím kódem pro násilné stažení souboru. Tady, pryč) Funkce se používá ke kontrole, zda $ _GET [‘cesta’] je definováno. Pokud je proměnná definována, soubor existuje() Funkce se používá ke kontrole, zda soubor na serveru existuje. Dále, hlavička () Funkce se používá k nastavení potřebných informací záhlaví před použitím readfile () funkce. The basename () funkce se používá k načtení názvu souboru a velikost souboru() Funkce slouží ke čtení velikosti souboru v bajtech, která se zobrazí v úvodním dialogovém okně pro stažení souboru. The spláchnout () Funkce se používá k vymazání výstupní vyrovnávací paměti. The readfile () funkce se zde používá pouze s názvem souboru.

download.php



-li( pryč ($ _ZÍSKEJTE['cesta']))
{
// Přečíst název souboru
$ název_souboru = $ _ZÍSKEJTE['cesta'];
// Zkontrolujte, zda soubor existuje nebo ne
-li( soubor existuje ($ název_souboru)) {

// Definujte informace v záhlaví
záhlaví ('Content-Description: File Transfer');
záhlaví ('Content-Type: application/octet-stream');
záhlaví ('Cache-Control: no-cache, must-revalidate');
záhlaví ('Vyprší: 0');
záhlaví („Obsah-dispozice: příloha; název souboru = ''. základní jméno ($ název_souboru).'' ');
záhlaví ('Content-Length:' . velikost souboru ($ název_souboru));
záhlaví ('Pragma: public');

// Vymazání vyrovnávací paměti výstupního systému
spláchnout ();

// Přečtěte si velikost souboru
readfile ($ název_souboru);

// Ukončení ze skriptu
the ();
}
jiný{
vyhodil 'Soubor neexistuje.';
}
}
jiný
vyhodil 'Název souboru není definován.'
?>

Výstup
Následující výstup se zobrazí po kliknutí na odkaz ke stažení souboru obrázku. Velikost souboru rose.jpg obrázek je 27,2 kB , jak je zobrazeno v dialogovém okně. Soubor si můžete stáhnout výběrem Uložení souboru přepínač a stisknutím tlačítka OK knoflík.

Příklad 2: Stažení souboru pomocí cesty k souboru

Pokud soubor v daném umístění souboru existuje, bude nutné uvést cestu k souboru v adrese URL. V tomto příkladu vytvoříme soubor HTML s následujícím kódem, který předá název souboru s cestou k souboru:

download3.html

< html >
< hlava >
< titul >Stáhnout soubory</ titul >
</ hlava >
< tělo >
< p >< na href='download.php? path = downloads/lecture.pdf'>Stáhnout soubor PDF</ na ></ p >
< p >< na href='download2.php? path = downloads/rose.jpg'>Stáhnout soubor JPG</ na ></ p >
</ tělo >
</ html >

Vytvoříme soubor PHP s následujícím kódem pro stažení souboru z cesty k souboru. Kód PHP v předchozím příkladu bude mírně upraven, aby se soubor stáhl z dané cesty. The clearstatecache () Funkce se používá k vymazání mezipaměti, která byla dříve uložena. V souboru jsou použity dva argumenty readfile () funkce.

download2.php


-li( pryč ($ _ZÍSKEJTE['cesta']))
{
// Přečíst URL
$ URL = $ _ZÍSKEJTE['cesta'];

// Vymažte mezipaměť
clearstatcache ();

// Zkontrolujte, zda cesta k souboru existuje nebo ne
-li( soubor existuje ($ URL)) {

// Definujte informace v záhlaví
záhlaví ('Content-Description: File Transfer');
záhlaví ('Content-Type: application/octet-stream');
záhlaví („Obsah-dispozice: příloha; název souboru = ''. základní jméno ($ URL).'' ');
záhlaví ('Content-Length:' . velikost souboru ($ URL));
záhlaví ('Pragma: public');

// Vymazání vyrovnávací paměti výstupního systému
spláchnout ();

// Přečtěte si velikost souboru
readfile ($ URL,skutečný);

// Ukončení ze skriptu
the ();
}
jiný{
vyhodil 'Cesta k souboru neexistuje.';
}
}
vyhodil 'Cesta k souboru není definována.'

?>

Výstup
Po kliknutí na odkaz ke stažení souboru PDF se zobrazí následující výstup.

Video-návod

Závěr

Tento článek poskytl jednoduchý způsob, jak násilně stáhnout libovolný soubor pomocí skriptu PHP, aby čtenářům pomohl přidat do svého skriptu funkci stahování.