Hvordan laste ned en fil i PHP

How Download File Php



Vanligvis er det ikke nødvendig med et PHP -skript for å laste ned en fil med utvidelsene exe og glidelås . Hvis filplasseringen for denne filtypen er angitt i href attributtet til ankerelementet, deretter lastes filen automatisk ned når brukeren klikker på nedlastingskoblingen. Noen filer, for eksempel bilde filer, PDF filer, tekst filer, CSV filer osv. lastes ikke ned automatisk, men åpnes i stedet i nettleseren når brukeren klikker på nedlastingskoblingen. Disse filene kan lastes ned med makt i PHP ved hjelp av lesefilen () funksjon som ikke lastes ned automatisk. Denne opplæringen viser deg hvordan du kan laste ned filer med PHP -script.

Sjekk nedlastingskoblinger

Det ble tidligere nevnt det glidelås og exe filer lastes ned automatisk uten å bruke PHP -skript. Opprett først en HTML -fil med følgende kode. Her er de fire ankerelementene definert for å laste ned de fire filtypene. Disse filtypene inkluderer TEKST-, ZIP-, PDF- og JPG -filer.







Download.html



< html >
< hode >
< tittel >Last ned filer</ tittel >
</ hode >
< kropp >
< s >< til href='abc.txt'>Last ned TEXT -fil</ til ></ s >
< s >< til href='horizon.zip'>Last ned ZIP -fil</ til ></ s >
< s >< til href='forelesning.pdf'>Last ned PDF -fil</ til ></ s >
< s >< til href='rose.jpg'>Last ned JPG -fil</ til ></ s >
</ kropp >
</ html >

Produksjon
Følgende dialogboks vises for å laste ned filen etter å ha klikket på zip -filkoblingen. Brukeren kan deretter laste ned filen eller åpne filen i arkivbehandling.




Hvis du klikker på bildefilen, åpnes bildet automatisk i nettleseren, som vist i følgende utdata. Du må lagre filen for å lage en kopi av bildefilen i den lokale stasjonen. På samme måte, når du klikker på PDF- og TEXT -filkoblinger, åpnes innholdet i filen i nettleseren uten å laste ned filen. Løsningen på dette problemet er å laste ned filen med tvang ved hjelp av den innebygde PHP readfile () funksjon.





Last ned fil ved hjelp av funksjonen readfile ()

De readfile () -funksjonen brukes i PHP -skript for å tvinge ned alle filer med gjeldende plassering, eller filen med filbanen. Syntaksen til denne funksjonen er gitt nedenfor.



Syntaks
int readfile (streng $ filnavn [, bool $ use_include_path = false [, ressurs $ kontekst]])

Denne funksjonen kan ta tre argumenter. Det første argumentet er obligatorisk, og de to andre argumentene er valgfrie. Det første argumentet, $ filnavn , lagrer filnavnet eller filnavnet med banen som skal lastes ned. Standardverdien til den andre parameteren, $ use_include_path , er usant og blir satt til true hvis filnavnet med banen brukes i det første argumentet. Det tredje argumentet, $ kontekst , brukes til å indikere kontekststrømressursen. Denne funksjonen returnerer antall byte som er lest fra filen som er nevnt i det første argumentet. Bruken av denne funksjonen er vist i de følgende to eksemplene.

Eksempel 1: Last ned fil med filnavn

I dette eksemplet vil vi opprette en HTML -fil med følgende kode, der filnavnet blir sendt som en parameter for URL -adressen som heter sti , og verdien av denne parameteren vil bli overført til PHP -filen som heter nedlasting.php .

nedlasting2.html

< html >
< hode >
< tittel > Last ned filer</ tittel >
</ hode >
< kropp >
< s >< til href='download.php? path = abc.txt'> Last nedTEKSTfil</ til ></ s >
< s >< til href='download.php? path = horizon.zip'> Last ned ZIP -fil</ til ></ s >
< s >< til href='download.php? path = lecture.pdf'> Last ned PDF -fil</ til ></ s >
< s >< til href='download.php? path = rose.jpg'> Last ned JPG -fil</ til ></ s >
</ kropp >
</ html >

Vi lager PHP -filen med følgende kode for å laste ned filen med makt. Her, den borte) funksjonen brukes til å kontrollere om $ _GET ['sti'] er definert. Hvis variabelen er definert, vil Filen eksisterer() funksjonen brukes til å kontrollere om filen finnes på serveren. Deretter vil Overskrift() funksjonen brukes til å angi nødvendig overskriftsinformasjon før du bruker readfile () funksjon. De basenavn () funksjonen brukes til å hente filnavnet og filstørrelse() funksjonen brukes til å lese størrelsen på filen i byte, som vil bli vist i dialogboksen for åpning for å laste ned filen. De flush () funksjonen brukes til å tømme utdatabufferen. De readfile () funksjonen brukes bare med filnavnet, her.

nedlasting.php



hvis( borte ($ _GET['sti']))
{
// Les filnavnet
$ filnavn = $ _GET['sti'];
// Kontroller at filen finnes eller ikke
hvis( Filen eksisterer ($ filnavn)) {

// Definer topptekstinformasjon
Overskrift ('Innholdsbeskrivelse: filoverføring');
Overskrift ('Innholdstype: applikasjon/oktettstrøm');
Overskrift ('Cache-Control: no-cache, must-revalidate');
Overskrift ('Utløper: 0');
Overskrift ('Innhold-disposisjon: vedlegg; filnavn = ''. basenavn ($ filnavn).'' ');
Overskrift ('Innholdslengde:' . filstørrelse ($ filnavn));
Overskrift ('Pragma: offentlig');

// Slett buffer for systemutgang
flush ();

// Les størrelsen på filen
readfile ($ filnavn);

// Slutt fra manuset
de ();
}
ellers{
kastet ut 'Filen eksisterer ikke.';
}
}
ellers
kastet ut 'Filnavn er ikke definert.'
?>

Produksjon
Følgende utdata vises etter at du har klikket på nedlastingskoblingen til bildefilen. Filstørrelsen på rose.jpg bildet er 27,2 KB , som vist i dialogboksen. Du kan laste ned filen ved å velge Lagre filen radioknappen og trykk på OK knapp.

Eksempel 2: Last ned fil med filbane

Hvis filen finnes på den angitte filplasseringen, må filbanen nevnes i URL -adressen. I dette eksemplet vil vi lage en HTML -fil med følgende kode, som vil passere filnavnet med filbanen:

last ned3.html

< html >
< hode >
< tittel >Last ned filer</ tittel >
</ hode >
< kropp >
< s >< til href='download.php? path = downloads/lecture.pdf'>Last ned PDF -fil</ til ></ s >
< s >< til href='download2.php? path = downloads/rose.jpg'>Last ned JPG -fil</ til ></ s >
</ kropp >
</ html >

Vi lager en PHP -fil med følgende kode for å laste ned en fil fra filbanen. PHP -koden i forrige eksempel vil bli litt endret for å laste ned filen fra den gitte banen. De clearstatecache () funksjonen brukes til å slette hurtigbufferen som tidligere ble lagret. To argumenter brukes i readfile () funksjon.

nedlasting2.php


hvis( borte ($ _GET['sti']))
{
// Les nettadressen
$ url = $ _GET['sti'];

// Tøm bufferen
clearstatcache ();

// Kontroller at filbanen finnes eller ikke
hvis( Filen eksisterer ($ url)) {

// Definer topptekstinformasjon
Overskrift ('Innholdsbeskrivelse: filoverføring');
Overskrift ('Innholdstype: applikasjon/oktettstrøm');
Overskrift ('Innhold-disposisjon: vedlegg; filnavn = ''. basenavn ($ url).'' ');
Overskrift ('Innholdslengde:' . filstørrelse ($ url));
Overskrift ('Pragma: offentlig');

// Slett buffer for systemutgang
flush ();

// Les størrelsen på filen
readfile ($ url,ekte);

// Slutt fra manuset
de ();
}
ellers{
kastet ut 'Filsti finnes ikke.';
}
}
kastet ut 'Filbanen er ikke definert.'

?>

Produksjon
Etter at nedlastningskoblingen til PDF -filen er klikket, vises følgende utdata.

Videoopplæring

Konklusjon

Denne artikkelen ga en enkel måte å laste ned filer med PHP -scriptet med makt, for å hjelpe leserne med å legge til nedlastingsfunksjonen i skriptet.