Come scaricare un file in PHP

Come scaricare un file in PHP
Generalmente, non è necessario uno script PHP per scaricare un file con le estensioni exe E cerniera lampo. Se la posizione del file di questo tipo di file è impostata in Href Attributo dell'elemento di ancoraggio, quindi il file scarica automaticamente quando l'utente fa clic sul collegamento Download. Alcuni file, come Immagine File, PDF File, testo File, CSV file, ecc., Non scaricare automaticamente e invece apri nel browser quando l'utente fa clic sul collegamento Download. Questi file possono essere scaricati con forza in PHP utilizzando il ReadFile () funzione che non scarica automaticamente. Questo tutorial ti mostra come scaricare forzatamente qualsiasi file usando lo script PHP.

Controlla i collegamenti di download

Era stato precedentemente menzionato che cerniera lampo E exe Download di file 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 di testo, zip, pdf e jpg.

Scaricamento.html



Scaricare files


Scarica il file di testo


Scarica il file zip


Scarica il file PDF


Scarica il file jpg



Produzione
La seguente finestra di dialogo sembrerà scaricare il file dopo aver fatto clic sul collegamento del file zip. L'utente può quindi scaricare il file o aprire il file in Archive Manager.


Se si fa clic sul file di immagine, l'immagine verrà aperta automaticamente nel browser, come mostrato nel seguente output. È necessario salvare il file per creare una copia del file di immagine nell'unità locale. Allo stesso modo, quando si fa clic su PDF e collegamenti al file di testo, il contenuto del file verrà aperto nel browser senza scaricare il file. La soluzione a questo problema è scaricare il file con forza utilizzando il PHP incorporato readFile () funzione.

Scarica il file usando la funzione readfile ()

IL readFile () La funzione viene utilizzata nello script PHP per scaricare con forza 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 $ fileName [, bool $ use_include_path = false [, risorsa $ contesto]])

Questa funzione può richiedere tre argomenti. Il primo argomento è obbligatorio e gli altri due argomenti sono opzionali. Il primo argomento, $ nome file, memorizza il nome file o il nome file con il percorso che scaricherà. Il valore predefinito del secondo parametro, $ use_include_path, è falso e verrà impostato su true se il nome 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: download file con nome file

In questo esempio, creeremo un file HTML con il seguente codice, in cui il nome del file verrà passato come parametro dell'URL denominato sentiero, e il valore di questo parametro verrà passato al file PHP denominato scaricamento.PHP.

Download2.html



Scaricare files


Scarica il file di testo


Scarica il file zip


Scarica il file PDF


Scarica il file jpg



Creeremo il file PHP con il seguente codice per scaricare con forza il file. Qui, il è impostato() La funzione viene utilizzata per verificare se il $ _Get ['Path'] è definito. Se la variabile è definita, il il file esiste() La funzione viene utilizzata per verificare se il file esiste nel server. Successivamente, il intestazione() La funzione viene utilizzata per impostare le informazioni di intestazione necessarie prima di utilizzare il readFile () funzione. IL basename () La funzione viene utilizzata per recuperare il fileName e il dimensione del file() La funzione viene utilizzata per leggere la dimensione del file in byte, che verrà visualizzato nella finestra di dialogo di apertura per scaricare il file. IL sciacquone() La funzione viene utilizzata per cancellare il buffer di output. IL readFile () La funzione viene utilizzata solo con il nome file, qui.

scaricamento.PHP

if (ISSET ($ _ GET ['PATH'])

// Leggi il nome file
$ fileName = $ _get ['path'];
// Controllare che il file esista o no
if (file_exists ($ fileName))
// Definisci le informazioni sull'intestazione
header ('Content-Description: File Transfer');
header ('Content-Type: Applicazione/Ottet-Stream');
header ("Cache-Control: no-cache, must-revalidate");
intestazione ("scade: 0");
header ('Content-Disposition: allegato; fileName = "'.Basename ($ fileName).'"');
Intestazione ("Lunghezza del contenuto:" . filesize ($ nome file));
header ('Pragma: pubblico');
// Cancella buffer di output del sistema
sciacquone();
// Leggi le dimensioni del file
ReadFile ($ fileName);
// Termina dallo script
morire();

altro
Il file echo "non esiste.";


altro
echo "il nome file non è definito."
?>

Produzione
Verrà visualizzato il seguente output dopo aver fatto clic sul collegamento di download del file di immagine. La dimensione del file del rosa.jpg L'immagine è 27.2 kb, Come mostrato nella finestra di dialogo. Puoi scaricare il file selezionando il Salvare il file pulsante di opzione e premendo il OK pulsante.

Esempio 2: scarica il file con percorso del file

Se il file esiste nella posizione del file indicata, sarà necessario menzionare il percorso del file nell'URL. In questo esempio, creeremo un file HTML con il seguente codice, che passerà il nome file con il percorso del file:

download3.html



Scaricare files


Scarica il file PDF


Scarica il file jpg



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 dato. IL ClearStateCache () La funzione viene utilizzata per cancellare la cache precedentemente memorizzata. Due argomenti sono usati readFile () funzione.

Download2.PHP

if (ISSET ($ _ GET ['PATH'])

// Leggi l'URL
$ url = $ _get ['path'];
// Cancella la cache
clearStatCache ();
// Controllare che il percorso del file esista o no
if (file_exists ($ url))
// Definisci le informazioni sull'intestazione
header ('Content-Description: File Transfer');
header ('Content-Type: Applicazione/Ottet-Stream');
header ('Content-Disposition: allegato; fileName = "'.Basename ($ URL).'"');
Intestazione ("Lunghezza del contenuto:" . filesize ($ url));
header ('Pragma: pubblico');
// Cancella buffer di output del sistema
sciacquone();
// Leggi le dimensioni del file
ReadFile ($ URL, True);
// Termina dallo script
morire();

altro
echo "percorso del file non esiste.";


echo "percorso del file non è definito."
?>

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

Tutorial video

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 proprio script.