PHP - Caricamento di file
Uno script PHP può essere utilizzato con un modulo HTML per consentire agli utenti di caricare file sul server. Inizialmente i file vengono caricati in una directory temporanea e quindi riposizionati in una destinazione di destinazione da uno script PHP.
Informazioni in phpinfo.php pagina descrive la directory temporanea utilizzata per il caricamento dei file come upload_tmp_dir e la dimensione massima consentita dei file che possono essere caricati è indicata come upload_max_filesize. Questi parametri sono impostati nel file di configurazione PHPphp.ini
Il processo di caricamento di un file segue questi passaggi:
L'utente apre la pagina contenente un modulo HTML con un file di testo, un pulsante Sfoglia e un pulsante Invia.
L'utente fa clic sul pulsante Sfoglia e seleziona un file da caricare dal PC locale.
Il percorso completo del file selezionato viene visualizzato nel testo archiviato, quindi l'utente fa clic sul pulsante di invio.
Il file selezionato viene inviato alla directory temporanea sul server.
Lo script PHP specificato come gestore del modulo nell'attributo di azione del modulo controlla che il file sia arrivato e quindi copia il file in una directory prevista.
Lo script PHP conferma il successo all'utente.
Come al solito durante la scrittura di file, è necessario che sia la posizione temporanea che quella finale abbiano le autorizzazioni impostate che consentono la scrittura dei file. Se uno dei due è impostato per essere di sola lettura, il processo fallirà.
Un file caricato potrebbe essere un file di testo, un file di immagine o qualsiasi documento.
Creazione di un modulo di caricamento
Il seguente codice HTM di seguito crea un modulo di caricamento. Questo modulo ha l'attributo del metodo impostato supost e l'attributo enctype è impostato su multipart/form-data
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions= array("jpeg","jpg","png");
if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if($file_size > 2097152){
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit"/>
</form>
</body>
</html>
Produrrà il seguente risultato:
Creazione di uno script di caricamento
C'è una variabile PHP globale chiamata $_FILES. Questa variabile è un array a doppia dimensione associato e conserva tutte le informazioni relative al file caricato. Quindi, se il valore assegnato all'attributo name dell'input nel modulo di caricamento erafile, quindi PHP creerebbe le seguenti cinque variabili:
$_FILES['file']['tmp_name'] - il file caricato nella directory temporanea sul server web.
$_FILES['file']['name'] - il nome effettivo del file caricato.
$_FILES['file']['size'] - la dimensione in byte del file caricato.
$_FILES['file']['type'] - il tipo MIME del file caricato.
$_FILES['file']['error'] - il codice di errore associato a questo caricamento di file.
Esempio
L'esempio seguente dovrebbe consentire il caricamento delle immagini e restituire il risultato come informazioni sul file caricato.
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_type = $_FILES['image']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['image']['name'])));
$extensions= array("jpeg","jpg","png");
if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if($file_size > 2097152) {
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true) {
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>
<form action = "" method = "POST" enctype = "multipart/form-data">
<input type = "file" name = "image" />
<input type = "submit"/>
<ul>
<li>Sent file: <?php echo $_FILES['image']['name']; ?>
<li>File size: <?php echo $_FILES['image']['size']; ?>
<li>File type: <?php echo $_FILES['image']['type'] ?>
</ul>
</form>
</body>
</html>
Produrrà il seguente risultato: