Hogyan lehet letölteni egy fájlt PHP -ben

How Download File Php



Általában nincs szükség PHP szkriptre a kiterjesztésekkel rendelkező fájlok letöltéséhez alkalmazás és postai irányítószám . Ha az ilyen típusú fájl helyét a href attribútumot, akkor a fájl automatikusan letöltődik, amikor a felhasználó rákattint a letöltési linkre. Néhány fájl, mint pl kép fájlok, PDF fájlok, szöveg fájlok, CSV fájlok stb., ne töltse le automatikusan, hanem nyissa meg a böngészőben, amikor a felhasználó rákattint a letöltési linkre. Ezek a fájlok erőszakkal letölthetők a PHP használatával a readfile () funkció, amely nem töltődik le automatikusan. Ez az oktatóanyag megmutatja, hogyan lehet erőszakkal letölteni bármilyen fájlt PHP szkript használatával.

Ellenőrizze a letöltési linkeket

Korábban szó volt arról postai irányítószám és alkalmazás a fájlok automatikusan letöltődnek, PHP szkript használata nélkül. Először hozzon létre egy HTML -fájlt a következő kóddal. Itt a négy rögzítőelem van definiálva a négy típusú fájl letöltéséhez. Ezek a fájltípusok a TEXT, ZIP, PDF és JPG fájlok.







Letöltés.html



< html >
< fej >
< cím >Fájlok letöltése</ cím >
</ fej >
< test >
< o >< nak nek href='abc.txt'>TEXT fájl letöltése</ nak nek ></ o >
< o >< nak nek href='horizon.zip'>ZIP fájl letöltése</ nak nek ></ o >
< o >< nak nek href='előadás.pdf'>PDF fájl letöltése</ nak nek ></ o >
< o >< nak nek href='rose.jpg'>JPG fájl letöltése</ nak nek ></ o >
</ test >
</ html >

Kimenet
A következő párbeszédpanel jelenik meg a fájl letöltéséhez, miután rákattintott a zip fájl hivatkozására. A felhasználó ezután letöltheti a fájlt, vagy megnyithatja a fájlt az archívumkezelőben.




Ha rákattint a képfájlra, a kép automatikusan megnyílik a böngészőben, amint az a következő kimeneten látható. Mentse a fájlt, hogy másolatot készítsen a képfájlról a helyi meghajtón. Ugyanígy, ha rákattint a PDF- és a TEXT -fájl linkjeire, a fájl tartalma a böngészőben megnyílik a fájl letöltése nélkül. A probléma megoldása a fájl erőszakos letöltése a beépített PHP segítségével readfile () funkció.





Fájl letöltése readfile () függvénnyel

Az readfile () függvényt használják a PHP szkriptekben, hogy erőszakkal töltsék le az aktuális hely bármely fájlját, vagy a fájl elérési útját tartalmazó fájlt. Ennek a függvénynek a szintaxisa az alábbiakban található.



Szintaxis
int readfile (karakterlánc $ fájlnév [, bool $ use_include_path = false [, erőforrás $ kontextus]])

Ez a függvény három érvet tartalmazhat. Az első érv kötelező, a másik két argumentum pedig nem kötelező. Az első érv, $ fájlnév , tárolja a fájlnevet vagy fájlnevet a letöltési útvonallal. A második paraméter alapértelmezett értéke, $ use_include_path , hamis, és igaz lesz, ha az első argumentumban az elérési utat tartalmazó fájlnevet használja. A harmadik érv, $ kontextus , a kontextusfolyam -erőforrás jelzésére szolgál. Ez a függvény az első argumentumban említett fájlból kiolvasott bájtok számát adja vissza. Ennek a funkciónak a használatát az alábbi két példa mutatja be.

Példa 1: Fájl letöltése fájlnévvel

Ebben a példában létrehozunk egy HTML -fájlt a következő kóddal, ahol a fájlnév a megadott URL paraméterként kerül átadásra pálya , és ennek a paraméternek az értéke át lesz adva a PHP nevű fájlnak letöltés.php .

letöltés2.html

< html >
< fej >
< cím > Fájlok letöltése</ cím >
</ fej >
< test >
< o >< nak nek href='download.php? path = abc.txt'> LetöltésSZÖVEGfájlt</ nak nek ></ o >
< o >< nak nek href='download.php? path = horizon.zip'> ZIP fájl letöltése</ nak nek ></ o >
< o >< nak nek href='download.php? path = előadás.pdf'> PDF fájl letöltése</ nak nek ></ o >
< o >< nak nek href='download.php? path = rose.jpg'> JPG fájl letöltése</ nak nek ></ o >
</ test >
</ html >

Létrehozzuk a PHP fájlt a következő kóddal a fájl erőszakos letöltéséhez. Itt, a elmúlt) funkció segítségével ellenőrizhető, hogy a $ _GET [’útvonal]] van definiálva. Ha a változó definiálva van, a A fájl létezik() funkció segítségével ellenőrizhető, hogy a fájl létezik -e a kiszolgálón. Ezután a fejléc() funkció a szükséges fejlécadatok beállítására szolgál a readfile () funkció. Az basename () függvény a fájlnév lekérésére szolgál, és a fájl méret() függvény a fájl méretének bájtban történő olvasására szolgál, amely a fájl letöltéséhez a megnyíló párbeszédpanelen jelenik meg. Az öblítés () funkció a kimeneti puffer törlésére szolgál. Az readfile () funkció itt csak a fájlnévvel használható.

letöltés.php



ha( elmúlt ($ _GET['pálya']))
{
// Olvassa el a fájlnevet
$ fájlnév = $ _GET['pálya'];
// Ellenőrizze, hogy a fájl létezik -e vagy sem
ha( A fájl létezik ($ fájlnév)) {

// Fejlécadatok meghatározása
fejléc ('Tartalom-leírás: Fájlátvitel');
fejléc („Tartalom típusa: application/oktett-stream”);
fejléc ('Cache-Control: nincs gyorsítótár, újra kell érvényesíteni');
fejléc ('Lejár: 0');
fejléc ('Tartalom-elhelyezés: melléklet; fájlnév = '. alapnév ($ fájlnév).'' '');
fejléc ('Tartalom hossza:' . fájl méret ($ fájlnév));
fejléc ('Pragma: nyilvános');

// Rendszer kimeneti puffer törlése
öblítés ();

// Olvassa el a fájl méretét
readfile ($ fájlnév);

// Megszakítás a szkriptből
az ();
}
más{
kidobta 'A fájl nem létezik.';
}
}
más
kidobta 'A fájlnév nincs megadva.'
?>

Kimenet
A következő kimenet jelenik meg, miután rákattintott a képfájl letöltési linkjére. A fájl mérete rose.jpg a kép az 27.2 KB , a párbeszédpanelen látható módon. A fájlt a letöltésével töltheti le Fájl mentése rádiógombot, és nyomja meg a gombot rendben gomb.

Példa 2: Fájl letöltése fájl elérési útjával

Ha a fájl létezik az adott fájl helyén, akkor a fájl elérési útját meg kell említeni az URL -ben. Ebben a példában létrehozunk egy HTML -fájlt a következő kóddal, amely átadja a fájlnevet a fájl elérési útjával:

letöltés3.html

< html >
< fej >
< cím >Fájlok letöltése</ cím >
</ fej >
< test >
< o >< nak nek href='download.php? path = downloads/előadás.pdf'>PDF fájl letöltése</ nak nek ></ o >
< o >< nak nek href='download2.php? path = downloads/rose.jpg'>JPG fájl letöltése</ nak nek ></ o >
</ test >
</ html >

Létrehozunk egy PHP fájlt a következő kóddal, hogy letölthessünk egy fájlt a fájl elérési útjából. Az előző példában szereplő PHP kód kissé módosul a fájl letöltéséhez az adott útvonalról. Az törli a gyorsítótárat () funkció a korábban tárolt gyorsítótár törlésére szolgál. Két érvet használnak a readfile () funkció.

letöltés2.php


ha( elmúlt ($ _GET['pálya']))
{
// Olvassa el az url -t
$ url = $ _GET['pálya'];

// Törölje a gyorsítótárat
törölje a fejfájást ();

// Ellenőrizze, hogy létezik -e a fájl elérési útja
ha( A fájl létezik ($ url)) {

// Fejlécadatok meghatározása
fejléc ('Tartalom-leírás: Fájlátvitel');
fejléc („Tartalom típusa: application/oktett-stream”);
fejléc ('Tartalom-elhelyezés: melléklet; fájlnév = '. alapnév ($ url).'' '');
fejléc ('Tartalom hossza:' . fájl méret ($ url));
fejléc ('Pragma: nyilvános');

// Rendszer kimeneti puffer törlése
öblítés ();

// Olvassa el a fájl méretét
readfile ($ url,igaz);

// Megszakítás a szkriptből
az ();
}
más{
kidobta 'A fájl elérési útja nem létezik.';
}
}
kidobta 'A fájl elérési útja nincs megadva.'

?>

Kimenet
Miután rákattintott a PDF fájl letöltési linkjére, a következő kimenet jelenik meg.

Video-bemutató

Következtetés

Ez a cikk egy egyszerű módot kínál a fájlok erőszakos letöltésére a PHP szkript használatával, hogy segítsen az olvasóknak hozzáadni a letöltési funkciót a szkriptjükhöz.