Carica più file in PHP
-
Usa il tag
multiple
, un array nel tagname
dell’attributoinput
nel form e la funzionemove_uploaded_file()
per caricare più file in PHP - Usa il PDO per caricare più file nel database 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 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