Vai al contenuto

Upload multiplo di immagini con Laravel e jQuery File Uploader

Come già detto, il nostro Controller RESTful conterrà solo i tre metodi necessari  index() , store()  e destroy() , che serviranno rispettivamente per mostrare, caricare/memorizzare e cancellare le immagini.

Per prima cosa importiamo le classi che ci servono:

Definiamo inoltre una cartella, dove salvare le nostre immagini, come proprietà del nostro Controller:

Per un progetto piccolo va bene così, altrimenti è consigliabile creare un file di configurazione dove definire la nostra cartella. Le immagini verranno salvate in /public/uploads .

Creiamo quindi il nostro primo metodo.

Analizziamo l’esempio di “Basic Plus UI” di Blueimp con gli strumenti di sviluppo di Chrome: notiamo che ciascuna immagine caricata, per poter essere mostrata correttamente nella tabella, viene restituita in formato JSON.

Prendiamo quindi questo modello per costruire il nostro JSON con i dati prelevati dal database, così da mostrare all’apertura della pagina le immagini già caricate in precedenza (se ci sono). Alcuni campi ( name  e url ) possiamo ottenerli direttamente dal database, altri invece li dovremo comporre noi (in particolare size , thumbnailUrl , deleteType  e deleteUrl). Ecco il codice completo:

Passiamo quindi al secondo metodo.

Questo è il metodo più complesso: per comodità, ho accorpato sia l’upload che il salvataggio su database. Il grosso è stato copiato dall’esempio presente su gargron/fileupload, che però è incompleto e necessita di qualche aggiustamento per restituire i dati corretti. In più ho aggiunto qualche script personalizzato (ad es. per creare la cartella /public/upload nel caso in cui non sia presente). Il codice completo è questo:

Infine, l’ultimo metodo.

Cancelliamo sia l’immagine fisica (e le relative miniature – tutto in automatico grazie a Croppa!) che il record sul database:

A questo punto il nostro script è completo e possiamo testarlo.

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.