Carica l’immagine utilizzando la libreria antiproiettile in PHP
Il caricamento di un’immagine sul server è un’attività comune per gli sviluppatori. Si può aver fatto questo compito centinaia di volte. Durante questo processo di caricamento, gli sviluppatori devono occuparsi delle seguenti cose.
- Controlla se il file caricato è un’immagine
- Crea una directory in cui verranno archiviate le immagini
- Genera un nome univoco per ogni immagine in modo che non sostituisca quella esistente con lo stesso nome.
- Facoltativamente, aggiungi la convalida per la dimensione di un’immagine. Se un’immagine caricata ha una dimensione maggiore di quella specificata, genera un errore.
Questi sono i controlli consigliati che uno sviluppatore dovrebbe seguire durante la scrittura del codice. Si possono scrivere le condizioni per tutti questi passaggi nel codice. Ma ci vorrà un po’ di lavoro e il codice diventerà lungo.
Consiglierò di utilizzare la libreria Bulletproof che gestisce tutti questi passaggi per te sotto il cofano. Ti fa risparmiare il tempo di aggiungere la logica per ogni passaggio e ridurre il numero di righe dal tuo codice.
Bulletproof è un uploader di immagini sicuro PHP, con una bella API. Abbiamo provato questa libreria per il nostro progetto e siamo abbastanza soddisfatti del risultato finale. Ecco perché ho deciso di condividere una parola su questa libreria con i nostri lettori.
La libreria Bulletproof ha le seguenti funzionalità nel suo nucleo che la rendono più sicura.
- Usa exif_imagetype() per ottenere il vero mime dell’immagine (.extension)
- Utilizza getimagesize() per verificare se l’immagine ha un’altezza/larghezza valida in pixel.
- Nomi delle immagini sanificate, autorizzazioni rigide per le cartelle e altro ancora…
Detto questo, diamo un’occhiata a come caricare immagini in PHP utilizzando la libreria Bulletproof.
Iniziare
Per iniziare con la libreria Bulletproof, installala utilizzando il comando Composer di seguito. Assicurati di avere Composer installato sul sistema.
composer require samayo/bulletproof:4.0.*
Quindi, crea un semplice modulo HTML con l’input del file e il pulsante di invio.
<form method="POST" enctype="multipart/form-data">
<p><input type="file" name="image" accept="image/*" required /></p>
<input type="submit" name="submit" value="Upload" />
</form>
Carica immagine utilizzando la libreria antiproiettile
Siamo impostati con una libreria e un modulo HTML. Ora aggiungiamo un codice fornito dalla libreria che carica un’immagine sul server.
<?php
require_once 'vendor/autoload.php';
if (isset($_POST['submit'])) {
$file = new BulletproofImage($_FILES);
$file->setLocation('uploads');
if ($file["image"]) {
$upload = $file->upload();
if ($upload) {
echo $upload->getFullPath();
} else {
echo $file->getError();
}
}
}
?>
Hai fatto. Vai avanti e provalo. Vedrai le tue immagini memorizzate all’interno della cartella ‘uploads’ con un nome univoco. L’utente può modificare questa posizione con qualcos’altro.
Se provi a caricare file diversi dalle immagini, riceverai un errore. Per ogni evenienza, se si desidera impostare anche la dimensione, aggiungere l’istruzione seguente nel codice precedente.
$file->setDimension(600, 400);
Qui ‘600’ è la larghezza dell’immagine e ‘400’ è l’altezza di un’immagine. Regola i valori in base alle tue esigenze.
Carica più immagini utilizzando la libreria antiproiettile
Potresti voler caricare più immagini su un server usando questa libreria. Richiede un piccolo cambiamento nel codice di cui sopra. Devi aggiungere un attributo ‘multiplo’ all’input del file. Inoltre, usa il formato dell’array per il nome dell’input del file. Successivamente, eseguiremo il ciclo di ogni immagine e la caricheremo sul server come segue.
<?php
require_once 'vendor/autoload.php';
if (isset($_POST['submit'])) {
for($i = 0; $i < count($_FILES['image']['name']); $i++) {
$arr_file = array(
"name" => $_FILES['image']['name'][$i],
"type" => $_FILES['image']['type'][$i],
"tmp_name" => $_FILES['image']['tmp_name'][$i],
"error" => $_FILES['image']['error'][$i],
"size" => $_FILES['image']['size'][$i],
);
$file = new BulletproofImage($arr_file);
$file->setLocation('uploads');
$upload = $file->upload();
}
}
?>
<form method="POST" enctype="multipart/form-data">
<p><input type="file" name="image[]" accept="image/*" multiple required /></p>
<input type="submit" name="submit" value="Upload" />
</form>
Questo è tutto! Spero che tu capisca come caricare un’immagine attraverso la libreria Bulletproof. Per favore condividi i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Una guida per caricare e comprimere immagini in Laravel
- Come ottimizzare l’immagine al caricamento in PHP
- Ridimensiona l’immagine in PHP usando TinyPNG