Sådan downloades en fil i PHP

How Download File Php



Generelt er det ikke nødvendigt med et PHP -script for at downloade en fil med udvidelserne exe og lynlås . Hvis filplaceringen af ​​denne filtype er angivet i href attributten for ankerelementet, derefter downloades filen automatisk, når brugeren klikker på downloadlinket. Nogle filer, som f.eks billede filer, PDF filer, tekst filer, CSV filer osv., downloades ikke automatisk og åbnes i stedet i browseren, når brugeren klikker på downloadlinket. Disse filer kan downloades med magt i PHP vha genfil () funktion, der ikke downloades automatisk. Denne vejledning viser dig, hvordan du med magt kan downloade enhver fil ved hjælp af PHP -script.

Tjek download -links

Det blev tidligere nævnt lynlås og exe filer downloades automatisk uden at bruge PHP -script. Opret først en HTML -fil med følgende kode. Her er de fire ankerelementer defineret til at downloade de fire filtyper. Disse filtyper inkluderer TEKST-, ZIP-, PDF- og JPG -filer.





Download.html



< html >
< hoved >
< titel >Download filer</ titel >
</ hoved >
< legeme >
< s >< til href='abc.txt'>Download TEXT -fil</ til ></ s >
< s >< til href='horizon.zip'>Download ZIP -fil</ til ></ s >
< s >< til href='forelæsning.pdf'>Download PDF -fil</ til ></ s >
< s >< til href='rose.jpg'>Download JPG -fil</ til ></ s >
</ legeme >
</ html >

Produktion
Følgende dialogboks vises for at downloade filen efter at have klikket på zip -fillinket. Brugeren kan derefter downloade filen eller åbne filen i arkivstyringen.




Hvis du klikker på billedfilen, åbnes billedet automatisk i browseren, som vist i følgende output. Du skal gemme filen for at lave en kopi af billedfilen i det lokale drev. På samme måde, når du klikker på PDF- og TEXT -fillink, åbnes filens indhold i browseren uden at downloade filen. Løsningen på dette problem er at downloade filen med magt ved hjælp af den indbyggede PHP readfile () fungere.





Download fil ved hjælp af funktionen readfile ()

Det readfile () funktion bruges i PHP -script til med magt at downloade enhver fil med den aktuelle placering eller filen med filstien. Syntaksen for denne funktion er angivet nedenfor.



Syntaks
int readfile (string $ filnavn [, bool $ use_include_path = false [, ressource $ context]])

Denne funktion kan tage tre argumenter. Det første argument er obligatorisk, og de to andre argumenter er valgfrie. Det første argument, $ filnavn , gemmer filnavnet eller filnavnet med den sti, der skal downloades. Standardværdien for den anden parameter, $ use_include_path , er falsk og sættes til sand, hvis filnavnet med stien bruges i det første argument. Det tredje argument, $ kontekst , bruges til at angive kontekststrømressourcen. Denne funktion returnerer antallet af bytes, der er læst fra den fil, der er nævnt i det første argument. Anvendelsen af ​​denne funktion er vist i de følgende to eksempler.

Eksempel 1: Download fil med filnavn

I dette eksempel opretter vi en HTML -fil med følgende kode, hvor filnavnet vil blive videregivet som en parameter for den navngivne URL sti , og værdien af ​​denne parameter overføres til den navngivne PHP -fil download.php .

download2.html

< html >
< hoved >
< titel > Download filer</ titel >
</ hoved >
< legeme >
< s >< til href='download.php? path = abc.txt'> DownloadTEKSTfil</ til ></ s >
< s >< til href='download.php? path = horizon.zip'> Download ZIP -fil</ til ></ s >
< s >< til href='download.php? path = lecture.pdf'> Download PDF -fil</ til ></ s >
< s >< til href='download.php? path = rose.jpg'> Download JPG -fil</ til ></ s >
</ legeme >
</ html >

Vi opretter PHP -filen med følgende kode for at downloade filen med magt. Her er væk) funktion bruges til at kontrollere, om $ _GET ['sti'] er defineret. Hvis variablen er defineret, skal file_exists () funktion bruges til at kontrollere, om filen findes på serveren. Dernæst header() funktion bruges til at indstille de nødvendige overskriftsoplysninger, før du bruger readfile () fungere. Det basenavn () funktion bruges til at hente filnavnet og filstørrelse() funktion bruges til at læse filens størrelse i bytes, som vil blive vist i dialogboksen til åbning for at downloade filen. Det Flush() funktion bruges til at rydde outputbufferen. Det readfile () funktion bruges kun med filnavnet her.

download.php



hvis( væk ($ _GET['sti']))
{
// Læs filnavnet
$ filnavn = $ _GET['sti'];
// Kontroller, at filen findes eller ej
hvis( file_exists ($ filnavn)) {

// Definer overskriftsoplysninger
header ('Indholdsbeskrivelse: filoverførsel');
header ('Indholdstype: applikation/octet-stream');
header ('Cache-Control: ingen cache, skal genvalideres');
header ('Udløber: 0');
header ('Indhold-disposition: vedhæftet fil; filnavn = ''. basenavn ($ filnavn).'' ');
header ('Indholdslængde:' . filstørrelse ($ filnavn));
header ('Pragma: offentligt');

// Ryd systemoutputbuffer
Flush ();

// Læs filens størrelse
læsefil ($ filnavn);

// Afslut fra scriptet
det ();
}
andet{
smed ud 'Filen eksisterer ikke.';
}
}
andet
smed ud 'Filnavn er ikke defineret.'
?>

Produktion
Følgende output vises, når du klikker på downloadlinket til billedfilen. Filstørrelsen på rose.jpg billede er 27,2 KB , som vist i dialogboksen. Du kan downloade filen ved at vælge Gem filen radioknappen og tryk på Okay knap.

Eksempel 2: Download fil med filsti

Hvis filen findes på den givne filplacering, skal filstien angives i webadressen. I dette eksempel opretter vi en HTML -fil med følgende kode, som passerer filnavnet med filstien:

download3.html

< html >
< hoved >
< titel >Download filer</ titel >
</ hoved >
< legeme >
< s >< til href='download.php? path = downloads/lecture.pdf'>Download PDF -fil</ til ></ s >
< s >< til href='download2.php? path = downloads/rose.jpg'>Download JPG -fil</ til ></ s >
</ legeme >
</ html >

Vi opretter en PHP -fil med følgende kode for at downloade en fil fra filstien. PHP -koden i det foregående eksempel vil blive ændret lidt for at downloade filen fra den givne sti. Det clearstatecache () funktion bruges til at rydde cachen, der tidligere blev gemt. To argumenter bruges i readfile () fungere.

download2.php


hvis( væk ($ _GET['sti']))
{
// Læs url
$ url = $ _GET['sti'];

// Ryd cachen
clearstatcache ();

// Kontroller, at filstien findes eller ej
hvis( file_exists ($ url)) {

// Definer overskriftsoplysninger
header ('Indholdsbeskrivelse: filoverførsel');
header ('Indholdstype: applikation/octet-stream');
header ('Indhold-disposition: vedhæftet fil; filnavn = ''. basenavn ($ url).'' ');
header ('Indholdslængde:' . filstørrelse ($ url));
header ('Pragma: offentligt');

// Ryd systemoutputbuffer
Flush ();

// Læs filens størrelse
læsefil ($ url,sand);

// Afslut fra scriptet
det ();
}
andet{
smed ud 'Filsti findes ikke.';
}
}
smed ud 'Filsti er ikke defineret.'

?>

Produktion
Når der er klikket på downloadlinket til PDF -filen, vises følgende output.

Video-tutorial

Konklusion

Denne artikel gav en enkel måde med magt at downloade enhver fil ved hjælp af PHP -scriptet for at hjælpe læsere med at tilføje downloadfunktionen i deres script.