Carica più file in PHP

Subodh Poudel 30 gennaio 2023
  1. Usa il tag multiple, un array nel tag name dell’attributo input nel form e la funzione move_uploaded_file() per caricare più file in PHP
  2. Usa il PDO per caricare più file nel database in PHP
Carica più file in PHP

Introdurremo un metodo per caricare più file in PHP specificando l’attributo name del tag input come un array e utilizzando l’attributo multiple. Il valore dell’attributo enctype del tag form è multipart/form-data. Questo metodo utilizza mysqli per la connessione al database.

Introdurremo anche un altro metodo per caricare più file in PHP utilizzando il PDO. Caricheremo i file in una cartella e poi li caricheremo in un database. Questo metodo è simile al primo metodo in termini di implementazione.

Usa il tag multiple, un array nel tag name dell’attributo input nel form e la funzione move_uploaded_file() per caricare più file in PHP

Possiamo specificare l’attributo name del tag input come un array per caricare più file. Il tag input utilizza la parola chiave multiple che ci consente di selezionare il file multiplo durante il caricamento. Possiamo scrivere la codifica multipart/form-data per l’attributo enctype per specificare come devono essere codificati i dati del modulo durante l’invio del modulo. Possiamo usare il mysqli per connetterci al database. La funzione move_uploaded_file() sposta il file caricato da una posizione temporanea del server alla posizione desiderata. Possiamo utilizzare le istruzioni SQL INSERT per caricare il file selezionato nel database.

Ad esempio, imposta una connessione al database con l’oggetto mysqli e assegna il valore alla variabile $db. Crea un modulo HTML con il metodo POST e il tipo di codifica come multipart/form-data per caricare i file. Specificare l’attributo type del tag input come file e l’attributo name come file[]. Non dimenticare di scrivere l’attributo multiple prima di chiudere il tag input. Scrivi il tag input per inviare il modulo.

Verificare se il modulo è stato inviato con la funzione isset(). Usa la funzione count per contare il numero di file caricati. Prendi $_FILES['file']['name'] come parametro per la funzione count e assegnalo a una variabile $countfiles. Usa il bucle for per eseguire il loop sul file caricato. All’interno del bucle, crea una variabile $filename e assegnala come $_FILES['file']['name'][$i]. Crea una cartella denominata upload nella directory principale. Usa la funzione move_upload_file() per spostare il file. Usa $_FILES['file']['tmp_name'][$i] come primo parametro che è il file con nome temporaneo. Usa 'upload/'.$filename come secondo parametro che è il nome del file e la posizione per memorizzare il file caricato.

Eseguire una query SQL INSERT per inserire i file nel database. Inserisci la variabile $filename sia come id che come name nella tabella fileup del database. Usa la variabile $db per chiamare la funzione query() con la variabile $sql come parametro per eseguire la query.

Codice di esempio:

# php 7.*
<?php
if(isset($_POST['submit'])){
    $countfiles = count($_FILES['file']['name']);
    for($i=0;$i<$countfiles;$i++){
        $filename = $_FILES['file']['name'][$i];
        $sql = "INSERT INTO fileup(id,name) VALUES ('$filename','$filename')";
        $db->query($sql);
        move_uploaded_file($_FILES['file']['tmp_name'][$i],'upload/'.$filename);
    }
}
?>
<form method='post' action='' enctype='multipart/form-data'>
<input type="file" name="file[]" id="file" multiple>
<input type='submit' name='submit' value='Upload'>
</form>
?>

Produzione:

SELECT * FROM `fileup`
id name 
1 cfc.jpg 
2 hills.jpg

Usa il PDO per caricare più file nel database in PHP

Possiamo usare il PDO per caricare più file in PHP. Possiamo utilizzare l’oggetto PDO per creare una connessione al database. Usiamo le istruzioni preparate per inserire il file nel database. Questo metodo è diverso dal primo solo in termini di connessione al database. Possiamo usare l’esatto modulo HTML anche per questo metodo. Dimostriamo questo metodo caricando due file jpg nella cartella e nel database.

Ad esempio, stabilire una connessione al database PDO utilizzando la parola chiave new e assegnarla alla variabile $conn. Verificare se il modulo è stato inviato con la funzione isset(). Contare i file utilizzando la funzione count come sopra. Quindi, scrivi una query sulla variabile $query per inserire id e name. Scrivi i segnaposto ? per i valori nella query. Prepara la query utilizzando la funzione prepare() e assegna il valore nella variabile $statement. Sposta ogni file nella cartella uplaod usando la funzione move_uploaded_file(). Eseguire la query utilizzando la funzione execute(). Fornisci un array con $filename e $target_file come parametri nella funzione.

Nell’esempio seguente, l’utente carica due file jpg. In primo luogo, il file viene caricato nella cartella upload, quindi viene caricato nel database. Il database contiene la tabella fileup, e ha le colonne id e name. Per saperne di più sulla funzione move_uploaded_files(), fare riferimento al Manuale PHP

Codice di esempio:

#php 7.x
<?php
$conn = new PDO("mysql:host=$server;dbname=$dbname","$username","$password");
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
if(isset($_POST['submit'])){
    $countfiles = count($_FILES['file']['name']);
    $query = "INSERT INTO fileup (id, name) VALUES(?,?)";
    $statement = $conn->prepare($query);
    for($i=0;$i<$countfiles;$i++){
        $filename = $_FILES['file']['name'][$i];
        $target_file = 'upload/'.$filename;
        move_uploaded_file($_FILES['file']['tmp_name'][$i],$target_file);
        $statement->execute(array($filename,$target_file));
        }
  }    
?>

Produzione:

SELECT * FROM `fileup`
id name 
1 upload/cfc.jpg 
2+ upload/count.jpg 
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn