Come scaricare un file in PHP

How Download File Php



In genere, non è necessario alcuno script PHP per scaricare un file con le estensioni EXE e cerniera lampo . Se la posizione del file di questo tipo di file è impostata nel href attributo dell'elemento anchor, il file viene scaricato automaticamente quando l'utente fa clic sul collegamento per il download. Alcuni file, come Immagine File, PDF File, testo File, CSV file, ecc., non vengono scaricati automaticamente e si aprono invece nel browser quando l'utente fa clic sul collegamento per il download. Questi file possono essere scaricati forzatamente in PHP usando il file di lettura() funzione che non si scarica automaticamente. Questo tutorial ti mostra come scaricare forzatamente qualsiasi file usando lo script PHP.

Controlla i link per il download

È stato precedentemente detto che cerniera lampo e EXE i file vengono scaricati automaticamente, senza utilizzare lo script PHP. Innanzitutto, crea un file HTML con il seguente codice. Qui, i quattro elementi di ancoraggio sono definiti per scaricare i quattro tipi di file. Questi tipi di file includono file TEXT, ZIP, PDF e JPG.







Download.html



< html >
< testa >
< titolo >Scaricare files</ titolo >
</ testa >
< corpo >
< P >< a href='abc.txt'>Scarica il file TESTO</ a ></ P >
< P >< a href='orizzonte.zip'>Scarica il file ZIP</ a ></ P >
< P >< a href='lezione.pdf'>Scarica il file PDF</ a ></ P >
< P >< a href='rosa.jpg'>Scarica il file JPG</ a ></ P >
</ corpo >
</ html >

Produzione
Apparirà la seguente finestra di dialogo per scaricare il file dopo aver fatto clic sul collegamento del file zip. L'utente può quindi scaricare il file o aprire il file nel gestore archivi.




Se fai clic sul file immagine, l'immagine verrà aperta automaticamente nel browser, come mostrato nel seguente output. È necessario salvare il file per eseguire una copia del file immagine nell'unità locale. Allo stesso modo, quando si fa clic sui collegamenti ai file PDF e TEXT, il contenuto del file verrà aperto nel browser senza scaricare il file. La soluzione a questo problema è scaricare forzatamente il file utilizzando il PHP integrato file di lettura() funzione.





Scarica file utilizzando la funzione readfile()

Il file di lettura() La funzione viene utilizzata nello script PHP per scaricare forzatamente qualsiasi file della posizione corrente o il file con il percorso del file. La sintassi di questa funzione è riportata di seguito.



Sintassi
int readfile ( string $nomefile [, bool $use_include_path = false [, risorsa $contesto ]])

Questa funzione può accettare tre argomenti. Il primo argomento è obbligatorio e gli altri due argomenti sono facoltativi. Il primo argomento, $nomefile , memorizza il nome del file o il nome del file con il percorso che verrà scaricato. Il valore di default del secondo parametro, $use_include_path , è false e verrà impostato su true se il nome del file con il percorso viene utilizzato nel primo argomento. Il terzo argomento, $contesto , viene utilizzato per indicare la risorsa del flusso di contesto. Questa funzione restituisce il numero di byte letti dal file menzionato nel primo argomento. Gli usi di questa funzione sono mostrati nei seguenti due esempi.

Esempio 1: Scarica file con nome file

In questo esempio, creeremo un file HTML con il seguente codice, dove il nome del file verrà passato come parametro dell'URL denominato il percorso , e il valore di questo parametro verrà passato al file PHP denominato download.php .

download2.html

< html >
< testa >
< titolo >Scarica file</ titolo >
</ testa >
< corpo >
< P >< a href='download.php?percorso=abc.txt'> ScaricaTESTOfile</ a ></ P >
< P >< a href='download.php?percorso=orizzonte.zip'>Scarica il file ZIP</ a ></ P >
< P >< a href='download.php?percorso=lezione.pdf'>Scarica il file PDF</ a ></ P >
< P >< a href='download.php?percorso=rose.jpg'>Scarica il file JPG</ a ></ P >
</ corpo >
</ html >

Creeremo il file PHP con il seguente codice per scaricare forzatamente il file. qui, il andato) la funzione viene utilizzata per verificare se il $_GET['percorso'] è definito. Se la variabile è definita, il il file esiste() La funzione viene utilizzata per verificare se il file esiste nel server. Successivamente, il intestazione() viene utilizzata per impostare le informazioni di intestazione necessarie prima di utilizzare il file di lettura() funzione. Il nomebase() la funzione viene utilizzata per recuperare il nome del file, e il dimensione del file() La funzione viene utilizzata per leggere la dimensione del file in byte, che verrà mostrata nella finestra di dialogo di apertura per scaricare il file. Il sciacquone() viene utilizzata per cancellare il buffer di output. Il file di lettura() la funzione viene utilizzata solo con il nome del file, qui.

download.php



Se( andato ($_GET['il percorso']))
{
//Leggi il nome del file
$nomefile = $_GET['il percorso'];
//Controlla che il file esista o meno
Se( il file esiste ($nomefile)) {

//Definisci le informazioni di intestazione
intestazione ('Contenuto-Descrizione: Trasferimento file');
intestazione ('Tipo di contenuto: application/octet-stream');
intestazione ('Cache-Control: no-cache, deve-riconvalidare');
intestazione ('Scade: 0');
intestazione ('Contenuto-Disposizione: allegato; nomefile=''. nome di base ($nomefile).'' ');
intestazione ('Lunghezza contenuto: ' . dimensione del file ($nomefile));
intestazione ('Pragma: pubblico');

// Cancella il buffer di output del sistema
sciacquone ();

//Leggi la dimensione del file
readfile ($nomefile);

//Termina dallo script
il ();
}
altro{
buttato fuori 'Il file non esiste.';
}
}
altro
buttato fuori 'Il nome del file non è definito.'
?>

Produzione
Il seguente output apparirà dopo aver fatto clic sul collegamento per il download del file immagine. La dimensione del file di rose.jpg l'immagine è 27,2 KB , come mostrato nella finestra di dialogo. Puoi scaricare il file selezionando il pulsante Salvare il file pulsante di opzione e premendo il tasto ok pulsante.

Esempio 2: Scarica file con percorso file

Se il file esiste nella posizione del file specificata, il percorso del file dovrà essere menzionato nell'URL. In questo esempio, creeremo un file HTML con il seguente codice, che passerà il nome del file con il percorso del file:

download3.html

< html >
< testa >
< titolo >Scaricare files</ titolo >
</ testa >
< corpo >
< P >< a href='download.php?path=downloads/lecture.pdf'>Scarica il file PDF</ a ></ P >
< P >< a href='download2.php?percorso=downloads/rose.jpg'>Scarica il file JPG</ a ></ P >
</ corpo >
</ html >

Creeremo un file PHP con il seguente codice per scaricare un file dal percorso del file. Il codice PHP nell'esempio precedente verrà leggermente modificato per scaricare il file dal percorso indicato. Il clearstatecache() La funzione viene utilizzata per cancellare la cache precedentemente memorizzata. Due argomenti sono usati nel file di lettura() funzione.

download2.php


Se( andato ($_GET['il percorso']))
{
//Leggi l'url
$url = $_GET['il percorso'];

//Svuota la cache
clearstatcache ();

//Controlla che il percorso del file esista o meno
Se( il file esiste ($url)) {

//Definisci le informazioni di intestazione
intestazione ('Contenuto-Descrizione: Trasferimento file');
intestazione ('Tipo di contenuto: application/octet-stream');
intestazione ('Contenuto-Disposizione: allegato; nomefile=''. nome di base ($url).'' ');
intestazione ('Lunghezza contenuto: ' . dimensione del file ($url));
intestazione ('Pragma: pubblico');

// Cancella il buffer di output del sistema
sciacquone ();

//Leggi la dimensione del file
readfile ($url,vero);

//Termina dallo script
il ();
}
altro{
buttato fuori 'Il percorso del file non esiste.';
}
}
buttato fuori 'Il percorso del file non è definito.'

?>

Produzione
Dopo aver fatto clic sul collegamento per il download del file PDF, verrà visualizzato il seguente output.

Video-tutorial

Conclusione

Questo articolo ha fornito un modo semplice per scaricare forzatamente qualsiasi file utilizzando lo script PHP, per aiutare i lettori ad aggiungere la funzione di download nel loro script.