Hur man laddar ner en fil i PHP

How Download File Php



I allmänhet krävs inget PHP -skript för att ladda ner en fil med tilläggen exe och blixtlås . Om filplatsen för denna filtyp är inställd i href attributet för ankareelementet, sedan laddas filen automatiskt ner när användaren klickar på nedladdningslänken. Vissa filer, t.ex. bild filer, PDF filer, text filer, CSV filer etc. laddas inte ner automatiskt och öppnas istället i webbläsaren när användaren klickar på nedladdningslänken. Dessa filer kan laddas ner med våld i PHP med readfile () funktion som inte laddas ner automatiskt. Denna handledning visar dig hur du med våld laddar ner alla filer med PHP -skript.

Kontrollera nedladdningslänkar

Det nämndes tidigare att blixtlås och exe filer laddas ner automatiskt utan att använda PHP -skript. Skapa först en HTML -fil med följande kod. Här definieras de fyra ankarelementen för att ladda ner de fyra filtyperna. Dessa filtyper inkluderar TEXT-, ZIP-, PDF- och JPG -filer.







Download.html



< html >
< huvud >
< titel >Ladda ner filer</ titel >
</ huvud >
< kropp >
< sid >< till href='abc.txt'>Ladda ner TEXT -fil</ till ></ sid >
< sid >< till href='horizon.zip'>Ladda ner ZIP -fil</ till ></ sid >
< sid >< till href='föreläsning.pdf'>Ladda ner PDF -fil</ till ></ sid >
< sid >< till href='rose.jpg'>Ladda ner JPG -fil</ till ></ sid >
</ kropp >
</ html >

Produktion
Följande dialogruta visas för att ladda ner filen efter att du klickat på zip -fillänken. Användaren kan sedan ladda ner filen eller öppna filen i arkivhanteraren.




Om du klickar på bildfilen öppnas bilden automatiskt i webbläsaren, som visas i följande utdata. Du måste spara filen för att kunna kopiera bildfilen i den lokala enheten. På samma sätt, när du klickar på PDF- och TEXT -fillänkar, öppnas filens innehåll i webbläsaren utan att ladda ner filen. Lösningen på detta problem är att ladda ner filen med våld med den inbyggda PHP readfile () fungera.





Ladda ner fil med funktionen readfile ()

De readfile () -funktionen används i PHP -skript för att med våld ladda ner alla filer på den aktuella platsen eller filen med filvägen. Syntaxen för denna funktion ges nedan.



Syntax
int readfile (string $ filnamn [, bool $ use_include_path = false [, resurs $ kontext]])

Denna funktion kan ta tre argument. Det första argumentet är obligatoriskt, och de andra två argumenten är valfria. Det första argumentet, $ filnamn , lagrar filnamnet eller filnamnet med sökvägen som laddas ner. Standardvärdet för den andra parametern, $ use_include_path , är falskt och ställs in på true om filnamnet med sökvägen används i det första argumentet. Det tredje argumentet, $ sammanhang , används för att ange kontextströmresursen. Denna funktion returnerar antalet byte som läses från filen som nämns i det första argumentet. Användningen av denna funktion visas i följande två exempel.

Exempel 1: Ladda ner fil med filnamn

I det här exemplet skapar vi en HTML -fil med följande kod, där filnamnet skickas som en parameter för webbadressen väg , och värdet för denna parameter skickas till den PHP -fil som heter download.php .

download2.html

< html >
< huvud >
< titel > Ladda ner filer</ titel >
</ huvud >
< kropp >
< sid >< till href='download.php? path = abc.txt'> Ladda nerTEXTfil</ till ></ sid >
< sid >< till href='download.php? path = horizon.zip'> Ladda ner ZIP -fil</ till ></ sid >
< sid >< till href='download.php? path = lecture.pdf'> Ladda ner PDF -fil</ till ></ sid >
< sid >< till href='download.php? path = rose.jpg'> Ladda ner JPG -fil</ till ></ sid >
</ kropp >
</ html >

Vi kommer att skapa PHP -filen med följande kod för att ladda ner filen med våld. Här, borta) funktionen används för att kontrollera om $ _GET ['sökväg'] är definierad. Om variabeln är definierad, fil existerar() funktionen används för att kontrollera om filen finns på servern. Därefter, rubrik() funktionen används för att ställa in nödvändig rubrikinformation innan du använder readfile () fungera. De basnamn () funktionen används för att hämta filnamnet och filstorlek() funktionen används för att läsa storleken på filen i byte, som visas i dialogrutan för att ladda ner filen. De spola() funktionen används för att rensa utmatningsbufferten. De readfile () funktionen används endast med filnamnet, här.

download.php



om( borta ($ _GET['väg']))
{
// Läs filnamnet
$ filnamn = $ _GET['väg'];
// Kontrollera att filen finns eller inte
om( fil existerar ($ filnamn)) {

// Definiera rubrikinformation
rubrik ('Innehållsbeskrivning: filöverföring');
rubrik ('Innehållstyp: applikation/oktettström');
rubrik ('Cache-Control: ingen cache, måste återvalidera');
rubrik ('Utgår: 0');
rubrik ('Innehåll-disposition: bilaga; filnamn = ''. basnamn ($ filnamn).'' ');
rubrik ('Content-Length:' . filstorlek ($ filnamn));
rubrik ('Pragma: offentligt');

// Rensa systemutmatningsbuffert
spola ();

// Läs filens storlek
läsfil ($ filnamn);

// Avsluta från skriptet
de ();
}
annan{
kastade ut 'Fil existerar inte.';
}
}
annan
kastade ut 'Filnamn är inte definierat.'
?>

Produktion
Följande utdata kommer att visas efter att du har klickat på nedladdningslänken för bildfilen. Filstorleken på rose.jpg bilden är 27,2 kB , som visas i dialogrutan. Du kan ladda ner filen genom att välja Spara fil radioknappen och tryck på OK knapp.

Exempel 2: Ladda ner fil med filväg

Om filen finns på den angivna filplatsen, måste sökvägen anges i URL: en. I det här exemplet skapar vi en HTML -fil med följande kod, som skickar filnamnet med filsökvägen:

ladda ner3.html

< html >
< huvud >
< titel >Ladda ner filer</ titel >
</ huvud >
< kropp >
< sid >< till href='download.php? path = downloads/lecture.pdf'>Ladda ner PDF -fil</ till ></ sid >
< sid >< till href='download2.php? path = downloads/rose.jpg'>Ladda ner JPG -fil</ till ></ sid >
</ kropp >
</ html >

Vi kommer att skapa en PHP -fil med följande kod för att ladda ner en fil från sökvägen. PHP -koden i föregående exempel kommer att ändras något för att ladda ner filen från den angivna sökvägen. De clearstatecache () funktionen används för att rensa cacheminnet som tidigare lagrades. Två argument används i readfile () fungera.

download2.php


om( borta ($ _GET['väg']))
{
// Läs webbadressen
$ url = $ _GET['väg'];

// Rensa cachen
clearstatcache ();

// Kontrollera att sökvägen finns eller inte
om( fil existerar ($ url)) {

// Definiera rubrikinformation
rubrik ('Innehållsbeskrivning: filöverföring');
rubrik ('Innehållstyp: applikation/oktettström');
rubrik ('Innehåll-disposition: bilaga; filnamn = ''. basnamn ($ url).'' ');
rubrik ('Content-Length:' . filstorlek ($ url));
rubrik ('Pragma: offentligt');

// Rensa systemutmatningsbuffert
spola ();

// Läs filens storlek
läsfil ($ url,Sann);

// Avsluta från skriptet
de ();
}
annan{
kastade ut 'Filväg finns inte.';
}
}
kastade ut 'Filväg är inte definierad.'

?>

Produktion
När du har klickat på nedladdningslänken för PDF -filen visas följande utdata.

Video-tutorial

Slutsats

Denna artikel gav ett enkelt sätt att med våld ladda ner alla filer med PHP -skriptet, för att hjälpa läsare att lägga till nedladdningsfunktionen i sitt manus.